Software Engineering and Algorithms

Algorithms and Data Structure against Software Engineering

Firstly, I want to talk a little bit about algorithms, data structure against software engineering.  Joel’s Article pointed out an excellent point that algorithms, data structure, functional programming is really important to learn, to challenge your mentality. And he is also right that current CS (and maybe IT, SE) degree is not hard enough, simply because if you designed a stupid software, it still WORKS, students will at least get  90+ points in your assignment. I see many not excellent students get 3.8 – 4.0 without any problems, because as Joel already stated, the problem in Software Engineering is when you have to extend, to make the software scalable, not when you create it. He’s all right about that. But he may make people misunderstand.

Algorithms is not the most important skill

For me, algorithm (if we consider it as a specific method to solve a specific problem rather than defined in wikipedia) is important, but it is no longer the most important skill and knowledge software engineer must have. Software engineers, nowadays, should expert about SOLID principles, and write reusable and maintainable code. Software engineers know how to design, architect and integrate between different system to write and maintain a scalable system. Software engineers can work with usability, working directly with client, understand and see the business and users’ world. These things require practice, thinking, learning from failure not just memorize them.  There are now many different jobs that do not require software engineers to become expert in algorithms, and also many great jobs requiring you to become algorithm expert. You may say that they are different jobs (like understand user’s business would be business analysis)) rather than software developers, you are wrong. Software developers now have to understand users’ mind, in general and specific domain to write usable features (read the Usability part in understand and see the business and users’ world for more details).

Algorithms != IT

Another misunderstanding about learning algorithms is that it will give you great mind in thinking in IT. It is right but not that much. In many cases, we work directly with a specific problem, like searching, sorting and computer vision. But that is a specific problem, people tried to solve it under a specific set of constraints. But software architect see the big picture, when to integrate, what to integrate and how to integrate. Both kinds of thinking are really difficult, requires creativity and experiences but hard to go for both. If people go too much into specific problem, it takes time to become an expert in another area. So, if people love one and want to become an expert in one, go for it.

But I like Algorithms

Personally, I do like algorithms so I usually do some algorithms competition in my free time on topcoder. Currently, I am working on this problem (another link if you can not access topcoder), if you want to join, just come. More people, more fun. I will write another entry to introduce about online IT competitions.

2 thoughts on “Software Engineering and Algorithms

  1. SyedWajahat Ahmed

    I think there’s no problem in alogrithms and data structures (specially in a heap cases) in software engineering because all it takes is work upon MinHeap & MaxHeap by a Software Engineer which even I myself can do it thru Classes,Use Cases and Exception Handling but one thing for sure is known here that really after becoming a software engineer or an applications engineer ,one forgets about any other activity in Computer Science and out of which the most important is the Heap diagrams.Now ,from now on we,software engineers will keep in mind to make the diagrams of Heap,Swap,Bubble sort,Selection sort,Divide and Conquer rule ,Threads,AVL tree,Binary search tree and arrays for sure.
    Here,Alogrithms is one of the most important items because the code depends upon somebody who can think deeper into a statement(s) & derieve something out of it for further developpement of the program in order to make it look human readable because “any fool can make a program but only a genius makes it human readable” and or human understandable.

  2. Idemo food

    Youu are so interesting! I don’t think I have read through a single thing like
    this before. So wonderful to discover someone with a feew genuine
    thoughts on this subject. Seriously.. many tuanks for starting this up.
    This website is one thing that is required oon the web, someone with some originality!


Leave a Reply

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