Here’s the list of new technology trends to follow based on my experience and prediction:
I’m still getting a lot of visits on my old 2010 post about top software development trends - so I guess there is interest in this topic. I feel many of my points were fair in that post and many still stand, but the additions from the last years are clearly missing.
So, the list:
Mobile really keeps getting big. With more and more people accessing the net via a mobile device (or tablet), businesses simply can’t afford not to focus on these users and visitors. As a developer, you cannot afford to ignore this field of technology. What to learn about mobile?
- iOS/Android development
- Responsive design
- Mobile UI kits
- Site size/peformance optimization – mobile users pay for bandwidth, be gentle with them!
This keeps popping up in my posts and talks – I find it very important to let as many developers know about agile as possible. Agile is a lightweight set of principles to guide you from project management to daily development. I call it the zen of work as it’s gently changing the way we work, how we communicate and is a general principle. Visit agilemethodology.org to learn more about the basic principles, while I urge you to look at more specific implementations:
Master more than one programming language
Every programming language may add new experiences to your professional knowledge. You get to see new ways of thinking, muti-paradigm solutions which is essential to your development as a professional. Also languages are like tools – the more you know, the better chances you have to do any kind of work you come across. Some of my (subjectively!) favourite languages:
- Haskell – seriously, give this one a shot. It’s not easy but it will just blow your mind when you start understanding things!
Get to know HTML5 and CSS3
I know you’re probably sick of these buzzwords, but there really is something about html5 and css3. They allow much nicer, semantically logical websites. Top html5 features:
- Multimedia support. Both audio and video!
- New input types – for example: email. With validation! With regexp!
- Custom data attributes
- In-place editable content
- Local storage
- Semantic tags like header, footer, aside, section, article, etc.
Top css3 features:
- font-face – downloadable custom fonts!
- RGBA colors – so you can also specify the transparency in one step
- border-radius – for rounded borders
- box-shadow and text-shadow
- multiple backgrounds
- transform – rotate, skew, scale and generic matrix-based transformation
- transition – nice change effect for elements
This goes hand in hand with the growing volume of mobile/tablet users. Responsive design basically means that your page responds to different resolutions and screen sizes. My blog is an example, try resizing the browser window and see how the layout changes along. Hopefully you can comfortably read this post on a mobile phone, on a tablet and on a desktop monitor without manually zooming in/out.
Responsive design to a certain extent can be done by pure CSS techniques, some tips:
There are combined js/css frameworks, like:
- Twitter bootstrap
Continuous integration / delivery
It’s more of a principle than a technology, but the basic idea is to be able to confidently go live at any time. Originally proposed as a part of XP (eXtreme Programming) it is the practice of merging all developer workspaces with a shared mainline several times a day basically.
Usually it means that you have a very good test coverage, and automated testing solution and an advanced deployment scenario.
- Puppet / Chef
Please share your thoughts on the topic – have I missed something? Am I wrong?