Showing posts with label computer. Show all posts
Showing posts with label computer. Show all posts

Wednesday, March 13, 2019

Have you heard about Competitive programming ?

---

Competitive Programming

If you are looking for job in Google,Amazon or facebook as programmer or developer/designer, definitely you will be familiar with the word "Competitive programming ".

I thought of sharing some of my thoughts on "competitive programming ".
As per wikipedia - Competitive programming is a mind sport usually held over the Internet or a local network. https://en.wikipedia.org/wiki/Competitive_programming

As per definition it’s a “sports”

I heard about hackerrank 3 or 4 years back. I got surprised seeing the success of hackerrank. Definitely its very useful website those who are trying to understand different algorithms/concepts/problems in computer science. After that there was a rain of similar websites … Codechef, CodeByte etc …etc … I don’t know which one of these came first.

But I would suggest nothing harm in login those websites and try to solve some of the problems . Don’t get disappointed /discouraged if you are not able to solve the questions. you don’t need to be a competitive programmer to be a programmer.

I am not huge fan of competitive programming. But it improves your programming skill in multiple perspective and definitely you might need to have this skill for getting into Product based Software companies like Google, Amazon and facebook etc . When I started trying to solve some of the problems in code force , I thought I would require PHD in mathematics to understand the problems . Most of them will be really tough mathematical problems. But if you start from easy , medium and then to difficult once, I hope you won’t need to run away from it :-)

Let me start with advantages of Competitive programming

  • You are going to get good understanding on the Algorithms and data structures .

  • You will get to know different areas in computer science - number theory,set theory,graph theory,string analysis etc. If you ask me , Are these mathematics subjects? I would need to say “YES”. But the fact is you need to have good understanding on these areas in order to develop something unique. ( This is debatable subject) , you can develop innovative or useful applications without much deep understanding on these areas.

  • definitely it’s a plus point for you to get into Software companies.

  • This gives you the ability to approach problems in different ways and helps to get the optimized one.

  • Definitely you will come to time complexity O(n) and space complexity in computer programming :-)

  • Some of the competitive programming sites gives you only limited time to solve the problem. When you start solving the problems in time bound question ,this helps a lot in interviews. You will be able to face the software companies interviews more efficiently.

I think I wrote some advantages , so let me mention some of the websites you can try this .

In my opinion you don’t need to be competitive programmer to become a programmer/developer.

Competitive programming Drawbacks:

  • First of all , its not a technology or programming style or skill that every programmer is needed. Everybody know we need good algorithms to perform the program well. Reading,writing,debugging programs will makes you skillful programmer. Sometimes competitiveness makes to take decision immediately or jump into conclusion quickly.

  • For getting into competitive programming there are some prerequisites - good mathematical knowledge, Computer languages that the websites are using, good knowledge in computer science concepts.

  • If you are trying to learn a programming language from basics (eg: C programming ), I don’t think those sites are the starting point. Those who are good in C, C++,python etc languages , these websites will be a good place to play around.

  • Competitive programming will not take you to most of the computer applications areas .
    eg: Those who are interested in embedded systems , will not get any knowledge on peripheral or architecture of the micro controller/processor from this. or those who are all interested website designing and development not going to get much from competitive programming apart from understanding on the algorithms or logical thinking.

  • Nowadays Application building is like “building blocks” game. More you know about libraries and modules on the area, you will be succeeded in building some good applications.

  • Software life cycle is totally different - As you know it start with requirement gathering,designing,coding,unit testing, functional testing and User acceptance testing and deployment etc. I don’t see competitive programming give much importance to designing and collaboration and testing.

  • If you look at object oriented programming or functional programming , they are a programming style that every programmer should be aware of .

  • You can build innovative applications without competitive programming skills.

Conclusion

Please don’t consider Competitive programming as waste of time. It will definitely improve knowledge on algorithms and computer theories. Keep improving your programming skill on competitive perspective as well. Also be ware of that there are lot of other areas in programming where we can focus on application building or we can playground. As I said earlier You don’t need to be competitive programmer to be developer/programmer.

Please share your thoughts and comments. Thanks!

Sunday, February 12, 2017

10 things you should do as programmer.



10 things you should do daily as programmer.

These are the 10 things  coming in my mind that a computer programmer should try to improve his skill.

1. Try to learn a new computer languages/frameworks .Alteast try what are the features and differences that Language offers.

2. Read different Technical blogs/coding online.

3. Watch atleast one programming/technology video tutorial daily.

4. Try to build applications by your own.

5. Read about trending Github open source projects

6. Read others Code/programs from online .

7. Participate in open source projects

8. Try to find some interested area in computer field and start research more on that area.

9.Write/publish about your learning and your projects as a blog or website.

10.Think about some innovate ideas and initiate open projects.


Monday, January 30, 2017

What is NaN ?

This is something new thing to me , NaN, standing for not a number in computing world. I know that 'divide by zero' is common scenario where most of the languages throws exceptions.

It is always hard to deal with 'infinity' in computer world. Just go through wiki what is NaN generation scenarios.

https://en.wikipedia.org/wiki/NaN

Friday, August 7, 2015

How to use Docker ?

First of all , what is docker ?... I came across docker when I was searching for code editor and how to compile C code form web applications.
http://qnimate.com/create-an-frontend-editor-with-code-highlighting-and-execution/

 Docker - https://www.docker.com/

Docker is an open-source project that automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of operating-system-level virtualization on Linux. https://en.wikipedia.org/wiki/Docker_(software)

I actually want to run the code in a virtual machine ( for this idea http://naveendavisv.blogspot.com/2015/08/thinking-to-build-microcontroller.html) and show the output in a text area, even though I don't need the full output, but if  the code can be checked for syntax error, I am much happy...