Top 5 trends and technologies in software development

by Ochronus on February 14, 2010

In this ever-changing world of software development it’s extremely important to keep up with current technologies, methodologies and trends. It can easily get out of hand though – simply there’s not enough time for anyone to learn all new stuff, work and live a normal life simultaneously. Selection is thus the key, being smartly selective about new things to learn so we won’t miss important stuff but also keep ‘junk’ or unimportant trends out.

I created this small and ever-incomplete list of things I feel we all should pay attention to and practice. Some items could be considered ‘old’ (read: more than a few months old) but still not grasped enough yet.

Without further ado I present thee the list:

  • Learn and use a modern scripting language
    • it can be Ruby, Python, Groovy or TheNextBigShot coming along, it doesn’t really matter. What matters is having a quick and easy tool for anything at hand so we won’t have to fire up our java IDE for a simple script. Also (most of) these languages encourage good pracices and methods, changing our attitude towards programming and program design. Embracing these “wow, look how elegant and simple that is!” solutions also become expectations with time (because we’ll get used to the ease and convenience), thus we will be striving for elegance and quality – helping impoving all of our further designs and codes. Some writings on ruby for example:
  • Learn thogoughly and embrace the philosophy of a modern version control system
    • Be it Git or Mercurial, but start using them. Right now. Embrace the paradigm shift that gave birth to these tools. If not at work then try any of these on a personal project. These tools fit better to a natural cycle of development than our old tools svn or cvs. Being distributed does not mean they can’t be used as a central company repo solution. They both encourage the concept of cheap local branching, keeping you safe by being able to revert any time (as traditional VCSes) and also keeping the central main repo clean of nitty-gritty details.
  • Be familiar with NoSQL solutions like MongoDB, CouchDB.
    • These beasts can be a real life-saver when traditional relational DBs reach their limits at scaling and performance. Both MongoDB and CouchDB are what’s called a ‘document-oriented database’ which means that instead of rigid schemas the structure of each row is taken into account – they don’t even have to have the same fields, etc. The concept of ‘row’ becomes the concept of ‘document’. JSON-like data structures, dynamic queries, efficient storage of binary data (like videos, images), mapreduce support account for their robust and easy use-cases.
  • Learn a functional language – or more than one.
    • It’s about the paradigm shift and philosophy again. The more things you see and use the more complete you repertoire will become. Object-oriented / imperative design is not the only one out there. Take a look at Erlang for starters, it’s easy to learn and with it you can dip your toe in the water, but for more serious stuff Haskell or OCaml is a must (I vote for Haskell though). I’d say learning a functional language is not an option anymore – it’s a must. Some problems can be solved in an insanely easy manner with a functional approach and for example Haskell can easily implement any mathematic definition or problem you’d be having a problem describing in any imperative language. Also GHC (The Glasgow Haskell Compiler) is a state of the art optimizing compiler, one of the best compiler available now. Of course Haskell is not only for scientists, many good libraries are coming out written in haskell. Also see Real world Haskell for a nice intro. Erlang is well known for its fault tolerance, concurrency paradigms, hot-swappable code and exceptional networking support. Having such a tool at hand is always a bonus.
  • Study agile methods and concepts.
    • Agile management is not only for managers. There’s a need for the whole team to have a good understanding about their own development and management process. Agile helps to standardize management and daily programmer work, enforcing a small, controllable devel/release/testing cycle and also encouraging good communication all across the team (actually agile just can’t work without good communicatiion!). Just look at the Agile manifesto. Some important derivatives and parts of agile methods:

My old friend Muhuk has written a nice follow-up on this topic here – many good points, be sure to check it out!

I’d be glad to hear your opinion, feedbacks and probably huge list of things I’ve missed here! Thank you for reading this article.

  • Pingback: Top posts on blog.mostof.it as of 2010.feb.13. | blog.mostof.it [ochronus]

  • http://www.reddit.com/user/ochronus ochronus

    In this ever-changing world of software development it’s extremely important to keep up with current technologies, methodologies and trends. It can easily get out of hand though – simply there’s not enough time for anyone to learn all new stuff, work and live a normal life simultaneously. Selection is thus the key, being smartly selective about new things to learn so we won’t miss important stuff but also keep ‘junk’ or unimportant trends out.

    This comment was originally posted on Reddit

  • Pingback: amithun

  • http://twitter.com/amithun amithun

    Trends and technologies in software development http://icio.us/q34qtx

    This comment was originally posted on Twitter

  • Pingback: Eugene Abarquez

  • Pingback: Ståle Pettersen

  • Pingback: bishoph

  • Pingback: Tord Fauskanger

  • Pingback: haocheng

  • http://twitter.com/eabarquez eabarquez

    Top 5 Trends In Software Development — http://j.mp/aQ9IyR

    This comment was originally posted on Twitter

  • http://twitter.com/bishoph bishoph

    Agile. Scripting. Git. NoSQL. Haskell. Top 5 Trends In Software Development — http://j.mp/aQ9IyR via @eabarquez

    This comment was originally posted on Twitter

  • Pingback: Ingram Chen

  • http://twitter.com/ingramchen ingramchen
  • http://kevinrodrigues.com/blog Kevin

    Web technologies like PHP, Javascript, HTML, CSS also seem a must to learn. Even if you are not going to be a pro in these, they help when you want to maintain or tweak your website or blog.

  • Pingback: MyWeeklyLinks – Week 7 « Ole Morten Amundsen

  • Pingback: On the road to being a better developer | implements Developer {

  • http://twitter.com/desk_stage desk_stage

    http://tinyurl.com/y9tgaxc
    Top 5 trends and technologies in software development

    This comment was originally posted on Twitter

  • http://twitter.com/peysal peysal

    Top 5 trends and technologies in software development http://blog.mostof.it/top-5-trends-in-software-development

    This comment was originally posted on Twitter

  • http://www.sporcic.org Tim

    Good list, but I agree with Kevin. JavaScript and HTML5 are must-learn technologies. And that “NextBigShot” is NodeJS, so kills two birds with one stone.

  • http://lincolnnguyen.com Lincoln Nguyen

    What about LISP?

    • http://www.iamnolegend.com ochronus

      What about it? :) Of course, I could have listed it along with some other langs.

  • Pingback: NoSQL Daily – Sat Nov 13 › PHP App Engine

  • Iveen Duarte

    “What matters is having a quick and easy tool for anything at hand so we won’t have to fire up our java IDE for a simple script.”
    Today I had to write one of those throwaway scripts, and, I did it using Python (never wrote a single line of Python code before), instead of Java, I was really impressed and will definitely start learning python.

  • http://www.techwench.com neo

    good list sir i starter entering into software field thanks for the post

  • http://nahdha.blogspot.com sameh

    good list…
    I can add to it also:
    1- HTML5
    2- Cloud computing
    3- Mobile development

    Also, I found TIOBE index very helpful in giving me pointers about what is there in the community, check it here http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

  • pblakez

    Javascript is also a great functional language pb…

  • http://www.targetprocess.com AnthonyBY

    Thank you for good motivating post. But Mary Poppendick in the AgileEE 2010 conference called Agile “old stuff”. It will be better learn about Kanban/Lean (in my opinion, this is really new Agile trend and hot topic)
    Regards,
    Anthony

  • http://www.marcusk.co.uk Marcus Kielly

    While I agree that Ruby, Python and Groovy are elegant languages – the are not the lingua franca of the web, that honour goes to the ugly duckling PHP. Failing to list PHP on a list of modern tech trends seems remiss to me, given that the vast majority of current web sites/apps are written with it.

    • http://www.iamnolegend.com ochronus

      While I surely agree that PHP is still a trending and widely used language (heck, I’m making my living 80% of PHP), I wouldn’t call it a modern scripting language. I could also have written C, C++ or Java following this logic as they are also quite widespread.

  • Pingback: ????????5??????? | Arthraim.cn

  • Pingback: Emerging Trends in Software Development « Bryan Soliman Blog

  • Pingback: Emerging Trends in Software Developments -Cloud Computing « Bryan Soliman Blog

  • http://foutsventures.com/ Software development

    I think
    in software  important to choose the
    appropriate development lifecycle process to the project at hand because all
    other activities are derived from the process.

  • http://foutsventures.com/ Software development

    I think
    in software  important to choose the
    appropriate development lifecycle process to the project at hand because all
    other activities are derived from the process.

  • Phila

    ha ha ha

Previous post:

Next post: