Learn new things in IT

 

What and how to study in IT

What and how to study in IT

Generally, I think in every area, not just IT, people face 2 questions on their studying lives. What to learn and how to learn it as fast and as deep as possible.

What to learn

In fact, the problem with “What to learn” is in some case really hard to answer, in some other cases it is really easy when somebody like your teachers, your bosses tell you that you need to learn this specific topic to serve for the assignments or for working this project. However, when you decide yourself, it is a big challenge requires a lot of experience and high vision on What will be the next technology/idea coming and if it worths spending time learning that new ideas in a big forest of technology. Our time is valuable, there are many interesting outside, you can not learn all of them.  I will not focus yet on this problem but I want to Open Discussion for everybody to share their experience and vision to answer the big question “What Will be The Next”

How to learn

Now, I focus on the easier question, how to learn fast and deep enough.

Here is an interesting post that you can read it yourself. BuuNguyen’s blog, learn new things from books. Overall, it says something about why you have to learn new things from books.  If you have any arguments with that post. You should reply on that blog, that guy is willing to answer you. I want to extend it and share some thing more here.

That post only focus on convincing the advantage of books. I want to suggest that you should learn from many books on the same topic.  It is not a new suggestion also, I read it on blog KHMT (I forgot the link of the post, search it later).  Why do you have to do so?No matter how good the book is, it is coming from an individual or a small group of actors,  that is restricted, and not enough.  Every books has a different way of addressing the problem, and that particular addressing model, in most cases, is not always excellent for every chapters/problems. My experience is picking some good books, looking through table of contents, looking through explaining model (graph, text, code, examples, mathematics, science, technology solution, tutorial…). Usually, the explaining model is consistent through a whole book (or many chapters of that book).  Moreover, different books can suggest other ideas, concepts that a book lacks which will be seen when looking at the preface or table of content.

There are many other ways of learning suggested by Thanh Cong (slides) on barcampsaigon. In brief, he suggested team working, tutorials, pair programming. One more thing suggested by me on barcampsaigon also is Teaching (thanks to huyzing and eric hosick). IMO, you will not be an expert in a specific topic until you can teach other guys to be as good as you. You will need to understand the problem deeply before you can tell it by your language by your ways. Moreover, different people learn by different approaches, you have to teach them based on their approach, their way of thinking. Another value is that you will immediately know what you lack in that topics when standing before a huge number of different kinds of questions.

23 thoughts on “Learn new things in IT

  1. ltvan

    To me, my answer for the question “what to learn?” is “how to learn?”. Once you master it, you don’t have to answer the question “what to learn?” any more. You can learn things as your need. You don’t need to learn everything ahead except that you know clearly and certainly that you need it.

    My way of learning is all about the nature of things. “Why” and “What is” are two questions I always ask myself. When you know the nature of something, you can extend your knowledge to related areas easily and quickly.

    For example, when I learned about Pascal, my first programming language, I went deep inside the nature of programming language and C++ doesn’t introduce many new things to learn. I used to write OOP in Pascal by reading an OOP book for C++ developer without any knowledge about C/C++ at that time, although I changed my mind after a while since I feel more interested in C++ when reading that book.

    Reply
  2. KhangVo

    I agreed that understanding the basic of the problems and solutions will help you a lot in learning quickly. However, the problem with “What to learn next” still remains there. You said something about “Learning when you need”.

    The problem is still in “When”. Our world is not static, it changed a lot overtime and when new thing appears, there may be more and more competitors over the time. Now, the problem is that we must be competent in 2 things: productivity and reputation. And the sooner you are in the area, the higher reputation you will get. For example, when clients ask “I want to do this stuff, does anyone have good people to implement it”, we can raise our hand and say “We already had many experienced programmers in this area.” Others say “We may have some experienced programmers in next month to do this”. Who wins? And after some time working in that area, our reputation is high enough so that nobody can compete with us.

    The question “When” is challenging, if we learn it too soon and it will not be popular, it is somehow useless. If we learn it too late and everybody in that area, we have little chance (and money as well) while joining and competing in that area.

    Reply
  3. ltvan

    That’s correct. You pointed out the main issue of many companies. That’s an essential question to grow a business. To answer this question, you must have an ability to “see the future”, i.e. you must learn to have a vision toward the market need.

    Until you have that ability, if you can learn a thing in 1 day, or 1 week, you can still win the deal. The higher complexity the technology is, the higher risk you take. If the risk is too high, you can choose to reject the deal and consider whether you should prepare for that new technology or not.

    If the deal is a job, I think that is not a big problem. If you plan to have your own business, that’s a risk that you must deal with.

    Reply
  4. Buu Nguyen

    Both are critical questions. Nobody can keep up with everything, but at the same time, it’s not quite right to say that “I’ll only learn things as needed because I already know how to learn”. The thing is, if you don’t actively learn for a period of time, you will be obsolete. LOST. (Think of a smart caveman coming into the civilization.)

    What-to-learn is context-specific. What-to-learn for me is not what-to-learn for anyone else. What you learn should fit your passion, career development goals, company strategies etc. And as long as that thing you choose to learn can strengthen even a single brain cell of yours, it’s not an entire waste. Whirl the clock back to 5 years, does it really matter if you pick to specialize in Ruby, Python, or Java? I don’t think so, as long as you’re an expert in some area then you should do fine.

    How-to-learn is also context-specific (although more about self). For me, and prob. many others, it’s about reading good books (before doing anything else). For others, it maybe about having good mentor/coach, reading good blogs, attending good seminars, or immediately putting the things in use etc. Understand yourself is the key to effective learning.

    Reply
  5. Khang Vo

    @ltvan:

    For jobs, imo, vision is still an important thing. Because, people always try their best to go advance, by changing to bigger companies/more challenge jobs/higher position. Changing to bigger companies such as Google (dreams of many developers, including me) requires a good vision as well. According to my know, in Google, people not just finish their task but also they can create their tools/projects themselves. Now, for developers/ software engineers, they have to think, they have to see advance the needs in the future. So, everybody now needs good vision regardless of what jobs they are doing (managers, marketing, software engineers, start up). It is absolutely sure that this ability does not come as a nature, it is a practice over and over time. If we do not start now, it becomes too late for us in the future when we really need it.:)

    @buu:

    Yeah, I agreed that boosting an even single brain cell is not an entire waste, but it will be better if we waste less. The best thing should be learning from that waste and avoid it in the future. A real expert in an area and we become competent and high reputation but everybody always wants to become better

    Reply
  6. ltvan

    @Buu Nguyen: Agreed. We will be left behind if we don’t update our knowledge.

    I also agreed that my saying could make people confusing. Just make clear that my need is not just the job need or the business need. I have my own favorite area and I keep myself up to date in that area just because I like it.

    I also keep myself moving on the way of learning because it’s not a dead-end. It’s a long long journey that you could find new interested things everyday.

    @Khang: Yes, vision is always important. What I mentioned is all about the other side: if you don’t have that good vision, losing an opportunity to have a better job is less severe than losing a business.

    Reply
  7. Quốc Anh Trịnh

    @Khang Vo: Your idea is good but as you already noticed, unfortunately you can’t tell what to learn if you are already somewhwat competent. Your vision is proportionate to your strength.

    I would start with the basic. Stay behind the crowd for a moment. Let’s ignore all the coolest things in the market. You go on your own journey, doing algorithms exercises with C or Pascal until data structures and algorithms sound like your key strength.

    1 or 2 years later, just pick something that smells good and go into great depth with it. You will notice that you are moving much faster than other people who are learning the same thing but skipped the fundamentals.

    Reply
  8. Quốc Anh Trịnh

    And I would like to add that it really doesn’t matter which one you pick at that moment – I agree with Buu Nguyen.

    You may think it is the key thing that will determine who will succeed, who will not. This cannot be further from the truth.

    Most IT concepts are transferrable. Say you start out with Java doing Struts but later the market dumps Struts completely and everybody uses Ruby on Rails. That would never hurt a Java expert.

    Reply
  9. Khang Vo

    Thanks for your idea of learning fundamental will help us to go much faster in the road. I absolutely agree with that. The question only matters if you are strong enough to learn new things.

    I may need to have some deeper discussion about that idea that using C+pascal to be professional in data structure and algorithms will make sure that you will move extremely faster later. However, I had a plan to write some blog about that rather than here.

    Yeah, the vision is proportional to your strength, but as I already stated that it requires time and effort to always practice. My key is to analyze a thing before you learn it and try to guess whether I should learn it now or later when it is really the time to learn. Yeah, it may not matter which one will make me a bigger success, the idea is I can know how to guess what’s next.

    This one is not so related to the question :”What to learn?” but also a big thing about vision. Look at Google and Microsoft. They are both successful, the big successes. Which one is considered to be more successful now?Most of the answers may be Google. There are many factors that contribute the success of Google. But one key thing is that Google do it before Microsoft comes. When Microsoft is there, the reputation of Google is too big, too late for Microsoft.

    Is search engine of Microsoft successful in terms of technology?Yeah, it is great. But now, reputation is the key and Google already got it:). So, I think, no matter what you do (even in case of learning), sooner you come and be master, you will get more benefits than the later guys.

    Reply
    1. ltvan

      @Khang:
      > Is search engine of Microsoft successful in terms of technology?Yeah, it is great. But now, reputation is the key and Google already got it:). So, I think, no matter what you do (even in case of learning), sooner you come and be master, you will get more benefits than the later guys.

      Agree but not totally. Microsoft is the later guy many times and some of them make very big success. For example the graphical user interface from MacOS, .NET Technology (~ Java), etc. Another example is Facebook.

      Reply
    2. ltvan

      One more thing, you should narrow the area of success. I understand that you talked about search engine. But on the general, Microsoft is still the most successful company right now.

      Google is also later than others in many areas. It’s not the first search engine in the world. It’s also not a first email service provider.

      I agree with serivn. Business vision is different with identifying “What to learn”. When GMail comes out to market, nobody knows about AJAX although it’s just an combination of old technologies. How can you learn if it does not exist (or be invented)? In the business world, you must be always creative to be the lead.

      Reply
      1. Khang Vo

        @ van and serin: yeah, I agreed that this is a different kind of vision as I already stated that it is not so relevant. However, It was my bad not stating so clearly
        @van:
        I only said that we will at least get some benefits if we release at the right time and before other people. It is not absolute that doing sooner will win (think about doing too soon and it is not mature yet).

        For the example only, .NET has its reputation because of the reputation of Microsoft. If .NET come out even before Java and at a good time, maybe Java can not become this successful

        Yeah, it is absolutely right that you can not learn if it is not there yet. How about learning things still in the research lab, not mature yet and applying it successfully?. examples can be Powerset (semantic search engine), now acquired and fully supported by Microsoft.

        We may think again about Search Engine example in technology aspect, Google Search Engine becomes successful because it is the first guy offering a democratic page rank algorithm. In some aspect, we can consider that when those guys do Phd in search engine, they know that this is the time search engine with that page rank algorithm become mature (the real truth, we don’t know). This is the reason they design and architect their systems (at first, this is just a research for their Phd) so that the system can be released out to industry
        More details can be read here: http://infolab.stanford.edu/~backrub/google.html

        Reply
  10. serivn

    1) OK I will wait for your thoughts about why (or why not) C or Pascal should be chosen as the language to learn DASP.

    2) Your example is really not so relevant. The vision you are talking about is a different kind of vision. It is more like business vision. You guess what is going to be big (cloud computing? dunno) and then focus your technical development in that direction.

    There is absolutely nothing wrong with that. But really, it is very different from a person asking “What to learn to become a better programmer” (in which case, choose which technolgy that fits your passion, as Buu Nguyen pointed out). It is more like “What part of IT should I learn to become more successful, making more money”.

    However, in the early stages, the answers to these 2 questions are still more or less the same.

    Reply
  11. Khang Vo

    1/ Ops, sorry, I did not mean that. I intend to challenge and make deeper discussion about the statement “professional in Algorithm and Data structure will make you learn faster”.:)

    2/ Yeah, it is business vision rather than technology vision as I already stated. However, they are closely related to each other in IT. I also refined the Google search engine example to make it more technology related.

    Yeah, there is not so much new idea in answers for the questions, I may need to gain some more experience before coming back this topic again

    Reply
  12. Nguyen Phuc Hai

    I am involved to software development for 10 years. Since the time of my first job, there are many new things. Let I remember what the new related IT knowledge during my working period:

    – XML <– Web Services <– SOA <– ESB
    – HTML <– AJAX <– RIA (JavaFX, Silverlight, Flex and Aajax)
    – .NET, many scripting and domain languages such as Groovy, Scala etc
    – J2ME and orchestra environment for various smartphones now.
    – And we have the new terminology cloud computing!
    – Waterfall <– RUP <–various Agile methodologies

    However, despite the marketers say 'The new technology X will be the next IT innovation blah blah blah', there are some things still not be changed:

    – Software Development Life Cycle
    – Object Oriented thoughts

    Decide to learn new things, it is depended on your interest, vision and other career goals. Be calm and analyze your needs before learning, except you must learn some new thing are requested by project or company needs. If you are the developer, and you want to learn the new things that fits your interest and your future career, let use the fishbone diagram:
    – Device: Mobile, Desktop, Web
    – Language & Platform: Java, .NET, PHP, etc
    – Domain: Financial, ERP, CRM, etc (most of outsource guys do not care on domain).
    – Technology: SOA, REST, RIA, ESB
    – Infrastructure: Clustering, Cloud

    For instance, if you want to learn Java, and develop enterprise application, it leads you decide to learn SOA, ESB and related areas. You may know to learn XML APIs, JSON etc. Try to investigate more, you may learn new APIs like Spring, Hibernate, Mule, Osgi etc

    Another example, if you think mobile will be the next generation device that you can buy your product to end-user, and Android (bot iPhone) is the dominated mobile platform, you should learn Android API, Java (part of it) and you may learn mobile web protocols etc

    About the topic how to learn effectively: I works with many IT guys and one pattern I see that most of guys do not practice enough. They read many articles, books but they rare to code in a challenge project except some program has difficulty level as 'Hello world'. They can say about SOA, REST but they do not know how to make a interoperability that is the issues when applying SOA, REST in orchestra environment. To become the expert in any area, you should not learn, work but the most important factor is 'think'. And the most important question raised while learning is 'why' not 'what', 'how'. I do not think if you code more and more, you will be the 'good' developer.

    Reply
  13. Khang Vo

    Thanks for your summary. It gives me an overview of what happened from the past to current state. This can help a lot when looking to the future.

    I agree with you that we really need to practice, to face real challenges and solutions. To add more, for me, a good combination between theory and practice is good. If we lack either of them, it is hard to be successful. Theory and book give us abstract, new ideas and practice gives us concrete, real skills.

    It is right that the question “why” is really important and more important than what and how. But I think we should encourage people to move beyond that. After we can understand “why”, we should try to be innovative and creative as well. And I think that is the last level of thinking

    Reply
  14. Khang Vo

    For the purpose of recommend people to learn and communicate effectively by English and also to open more opportunities to exchange with foreigners’ ideas, I currently do not allow Vietnamese communication.

    For your question “What thinking is”, it may worth a big discussion and I will share with you useful links, in both English and Vnese. To summarise, imo, there are some levels of thinking: remembering, applying exactly the theory into practice, know how and when to apply the theory, know why the theory exists, change and create a new theory.

    Reply
  15. Thuan

    Above all, thanks for your question, bro Khang.

    I roamed on Internet and just found this post. Althougt it was writen 2 years ago but I think I should leave idea at here in order to share my opinion of matters.

    If I were you, I would give supplementary question in front of yours questions. “What will you be responsible for current IT world? Or I would give it as a sub-question to the first question. Once you can rapidly answer this question, I think you do know what you should learn. Why did I put sub-question? I want to bring out key for the first question “What to learn”. I mean key not that answer. For instance, you think that you will be Software Engineer so you gonna reach out what you must learn. Then you will learn about common programming languages in programing world. You will select one language as a result. Suppose you select C++ for making great games as you loved but what will happen after? You won’t be capable of learning it because of complicated stuffs. Will you give up or keep walking? It’s not easy to answer it. To be honest by my viewpoint, selecting technology or responsibility is different from mastering it. In other words, mastering technology is other extreme. Why? Let me say again about your capabilities. I continue to mean about your brain. I know I have had normal brain so I can learn programming yet. And you? Will you prove by your patience in order to oppose me or acknowledge my viewpoint to be true? It looks as I’m complicating matters. No, I’m clarifying the first question otherwise you will stray on desert without water or on maze without map. I know you are keen on programming to make great products but your patience won’t make you to be programmer. Patience is just one of core factors for your target later. How about passion? I like the picture having two choices and I do think A choice is better than B choice. But I disagree the B choice because of non-objective existense. I know an Oracle developer who has learned Oracle development because of monies and big chance. He is working at Australia and earning $120,000/year. Not what we like is executable. Anyway, I appreciate the A choice.

    To finish the first question, I have following keys:
    1.Define your responsibility for current IT world, such as SQL DBA, Oracle DBA, Software Engineer (.NET, Java, PHP, Ruby, Python..), Game Developer (C++, Java, XNA, Silverlight…), System Administrator (Linux, Windows..)..or so on as specific as possible.
    2.Take your time to think and experience about what you should learn.
    3.Recognize your capabilities for learning what you specify within 3-5 months (very important).
    4.Re-select again your responsibility if you can’t be capable of learning what you specify.
    5.One last way if you fail 3rd key and 4th key is that you can learn IT planning, such as ECM strategy, DR, HA, ISO, IMP, IS, Project management …etc.

    Right now, continue to the last question “How to learn”. It’s useful question. Selecting a book which is writen about what you specify, such as ASP.NET, C++, C#, Windows Server 2008, Linux or so on is my first idea. Reading great post !!! (http://www.buunguyen.net/blog/when-you-learn-new-things-learn-from-books.html). I also suggest that you should learn from many books on the same topic as bro Khang ‘s recommendation. However, when you read book, don’t believe in fully what you read. I mean that you should think, think and think what you read. And then you can widen in order to improve your thinking by make questions. For instance, because I’m not deloper so let me give an example about Itpro. When I finished reading Document Management solution by using out-of-the-box SharePoint 2010 in a book, I will expand by finding some DM strategies form another book. It’s my true example.

    If you can’t self-answer, let’s find communities but above all, reading it (http://vodkhang.com/career/why-should-we-join-community). I do think that the communitiy is best resource for you. Maybe you can’t find real-world solutions or best-practice things in your books, but with community, you can find them rapidly by making your question. Joining community is one of ways that you can improve future career. But to join community and to be active member, you must write English well. This is my strong recommendation. You can write good question, answer even write entries of blog for community. All of them need to be consider carefully. Once you join community, you will know expert and their blog. Learn it and comment if you can.

    What’s else? Oh, you should attend workshop, conference to gain knowledges as much as possible. If you can speak, don’t hesitate to register your presentation.

    Summing up for the last question:
    – Select and read book.
    – Make your question and try to find answer.
    – Join community to query/answer and learn real-word/best-practice things.
    – Attend and speak at workshop, conference if you can.

    One addition resource for you: http://www.techrepublic.com/blog/10things/10-ways-to-become-an-it-superstar/2106

    Reply
  16. admin

    Hi,

    I know it has been a month from this, I didn’t take enough time to answer you properly, so I will leave a reply to you soon. Thanks for the long comment

    Reply
  17. admin

    Hi Thuan,

    I really appreciate your comment and sorry again that it took me more than 4 months to write a good reply to your comment.

    So, come back to this old article with my new experience, I would like to add one more important field that I lacked in this post: innovation. There is a quote that always reminds me of that important area: “The best way to predict the future is to create it”.

    It is really hard to predict the correct future and choose the right technology to learn. But, it would be even hard, and more risky to be innovative. You could read more here.
    http://vodkhang.com/career/high-risk-and-high-return

    Reply
  18. Pingback: Elektrische Zahnbuerste

Leave a Reply

Your email address will not be published. Required fields are marked *