Altabel Group's Blog

Posts Tagged ‘Programming

 

“Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.”
Donald Knuth, 1974

 

It’s better to start your journey into the career of programming by answering the question “Do you really need programming?” This question does not apply to those, who majored in computer programming or was close to it. If at school you were good at math, if you like to spend a lot of time sitting in front of the computer, if you want to learn something new, then programming is for you. What is more, this area is now in demand and highly paid in the world, job vacancies for the post of programmers are always open. Isn’t it the best time to be a programmer? 🙂

Everyone knows that the future programmer should be able to think broadly and to present the project from different perspectives before its implementation and realization. Unfortunately, the machine does not understand a human language. Of course, I’m not talking about Siri and other voice recognition — I’m talking about the creation of new software. To create the calculator, the computer needs to be given the task in the same way as the foreman explains to workers how to lay bricks. That’s why you can’t do anything without understanding the programming languages. Well, first you need to decide what kind of programming languages we should start with.

And here everyone chooses a language which will be useful for him. It depends on the kind of products you are going to develop. Most of us studied Turbo Pascal at school, and it’s no news that this language is practically not used anymore. So, if you want to join the team of programmers in the nearest future, the choice of language should be made sensibly.

Among the most popular programming languages in 2016 are Java, followed by C languages, then Python, JavaScript, PHP, Ruby, etc. It should come as no surprise that the more popular language is, the more chances you have to find work in the future. So, you’d better start with Java or C#, as these are the best paid and relatively simple learning languages of writing code. If you can’t cope with them, then you should try to learn Python. This language suits for quick and effective programming.

But if you have no programming experience at all you can start with something more simple for understanding. Good examples can be the basics of HTML and CSS.

Why? These two languages are essential for creating static web pages. HTML (Hypertext Markup Language) structures all the text, links, and other content you see on a website. CSS is the language that makes a web page look the way it does—color, layout, and other visuals we call style. Well, if you are interested in making websites, you should definitely start with HTML and CSS.

Let’s move to JavaScript. It is the first full programming language for many people. Why? It is the next logical step after learning HTML and CSS. JavaScript provides the behavior portion of a website. For example, when you see that a form field indicates an error, that’s probably JavaScript at work.

JavaScript has become increasingly popular, and it now lives outside web browsers as well. Learning JavaScript will put you in a good place as it becomes a more general-purpose language.

Some people also suggest choosing Python as the first programming language because Python’s program code is readable, first of all. You don’t even need to be a programmer to understand what is happening in the program. Due to the simple syntax of Python you will need less time for writing programs than in Java, for example. A huge base of libraries will save you a lot of strength, nerves and time. Large technology companies are working with Python: Yandex, Google, Facebook and YouTube. It is used for web applications, game development, software for servers.

Java can also be a good choice for a beginner. This language is more popular than Python, but a bit more complicated. At the same time, the development tools are much better designed. Java is one of the most popular languages for the backend development of modern enterprise web applications. It is used in Amazon, eBay, LinkedIn and Yahoo! With Java and the frameworks based on it, developers can create scaling web apps for a wide range of users. Java is also the primary language used for developing Android applications for smart phones and tablets. Moreover, after Java you will be able to work with low level programming languages.

PHP is one more popular language. The PHP language, along with databases (e.g. MySQL) is an important tool for creating modern web applications. Most of the sites developed on PHP are focused on a large amount of data. It is also a fundamental technology of powerful content management systems like WordPress. There are no normal imports in PHP, there are many solutions to one and the same problem. And it makes training more complicated.

 

 
The languages C and C# are a bit complicated for a beginner. But if you develop software for embedded systems, work with system kernels or just want to squeeze out every last drop from all available resources, C is what you need.

Ruby has begun to gain popularity since 2003, when the framework Rails appeared. Used widely among web startups and big companies alike, Ruby and Rails jobs are pretty easy to come by. Ruby and Rails make it easy to transform an idea into a working application, and they have been used to bring us Twitter, GitHub, and Treehouse.

Choosing a programming language may still seem challenging. It shouldn’t. You can’t go wrong. As long as you choose a language that is regularly used in technology today, you’re winning. When you are starting out, the goal is to become solid in the basics, and the basics are pretty similar across almost all modern programming languages.

Part of learning to code is learning a language’s syntax (its grammatical or structural rules). A much bigger part of learning to code, the part that takes longer and gives you more headaches, is learning to solve problems like a programmer. You can learn the grammatical structure of the English language pretty quickly; however, you won’t truly understand the language until you put that grammatical structure to use in a conversation. The same is true in programming. You want to learn the core concepts in order to solve problems. Doing this in one language is similar to doing it in another. Because the core concepts are similar from language to language, I recommend sticking with whichever language you choose until your understanding of the core concepts is solid. If you have a clear idea of your reasons for learning to program, and know exactly what you want to accomplish with your new coding skills, then you’ll be able to make the right choice.

How did you guys get into programming? What are the best programming languages for first-time learners?

Please, share with us your experience and opinion here below 🙂

 

Kate Kviatkovskaya

Kate Kviatkovskaya

Business Development Manager

E-mail: Kate.Kviatkovskaya@altabel.com
Skype: kate.kviatkovskaya
LI Profile: Kate Kviatkovskaya

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

At one time, universities and colleges were institutes of higher learning for those who were passionate about acquiring knowledge. Today, education discussions tend to to center around how much individuals can make with their degree. Thanks to the Internet there are still places that offer open learning initiatives designed to help a new generation of technologists succeed.

Let’s start reviewing the free online courses to grow your tech skills.

1. Data visualization

Those who can take different types of data and visualize it in a way that helps provide clarity and insight are in demand. The big data machine is picking up steam. In fact, according to recent data from Dice, big data skills rank highly among those most in demand by employers.

This four-week free course offered by the University of Illinois through Coursera provides a foundation in elementary graphics programming, human perception and cognition, basic visualization, visualizing relationships and information. The course is offered from July 20th – August 15th, 2015 and requires roughly 4-6 hours per week of study time.

2. Programming for everybody (Python)

This beginner’s course is a gentle introduction into the world of Python programming. It’s meant to be a first programming course, and as a result the focus is more so on understanding the concepts. There are no prerequisites and no advanced math skills are required so if you’ve ever wanted to learn how to code or are just interested in the simple intuitive programming syntax that Python offers now is the time to take advantage of this opportunity to learn.This 10-week free course is offered from October 5th to December14th 2015. It requires 2-4 hours a week of study time. All textbooks and resources are free.

3. Begin programming: build your first mobile game

A crash course in programming, this offering from Future Learn aims to teach the beginnings of Java, taking students through the basics of programming by modifying a small Java game (code provided) that can run on your desktop or your Android devices.

Over the seven-week course has started on June 1 , 2015 students will be introduced to the basic constructs of Java that are similar to many programming languages. The course consists of video introductions, on-screen examples, Java game code, downloadable guides, articles and group discussions. It requires roughly four hours of study per week.

You could join the course in progress or register to a new one (date TBA).

4. Introduction to Linux

Have you always wanted to learn more about Linux but never had the extra cash to inveset. This course offered through edX might be just what you’re looking for. The Linux Foundation partnered with edX to offer this free Introduction to the Linux that covers familiarity with the graphical interface and command line as well as a look at all the major Linux distributions. The course gives an over view of the day to day working environment of a Linux administrator and covers pertinent tools and skills.

The designers of the course estimate that a total of 40- 60 hours of study are required to accurately cover the material. Students have the option of auditing the course, at no cost. You get access to course materials, tests, assignments and activities. Those who audit and complete the course will receive a certificate of achievement, but for those wanting to add it as a bullet point on their resume there is a verified certificate available for a fee.

5. Google Analytics Academy

With the proliferation of the Web, online shopping and social media marketing, competition for organic search traffic has gone through the roof. Understanding your website’s analytics can help you make better data-based decisions while at the same time improving the customer experience. Google knows this and would love for you to use its product, Google Analytics. So much so that they’ve created this online learning center that offers courses to help you better use the hidden data located within your site.

The courses highlighted here are all free and are good examples of how the digital revolution is bringing education to the masses around the globe.

 1176dce

Romanas Lauks
Romanas.Lauks@altabel.com
Skype ID: romanas_lauks
Marketing Manager (LI page)
Altabel Group – Professional Software Development

The competition in the server side programming department is getting tougher with each month, especially with the recent popularity of NodeJS. However let`s look how everything began.

PHP appeared about 20 years ago, in 1995 and ever since then it has been a number one language for back-end developers and has gathered a big community behind it. For a long time there wasn’t any good reason why not to use PHP: it`s rather easy to use PHP, it`s supported by the majority of hosting companies and it has become the most commonly used language in terms of number of websites powered by it.

NodeJS was created in 2009 and it was very unique to all the other back end languages. It`s an efficient and scalable software platform that can execute JavaScript code on a server. NodeJS uses event-loops rather than traditional threading, which makes it faster and less memory-intensive than traditional platforms. Thus the ability to use Javascript on both the client and the server and the ability of NodeJS to run asynchronously have undoubtedly lead to the rise of NodeJS and its popularity within developers and customers.

Of course, everyone has his own truth: one coder will praise the speed of NodeJS while the other will be devoted to the stability and long history of PHP. But let`s have a look at strong sides of both for you to decide whether to concern yourself with the so popular nowadays NodeJS or not.

PHP strong sides:

– Huge community and tons of materials for all programmers, from a beginner to an advanced coder.
– Deep code base. The most popular platforms for building websites (WordPress, Drupal, Joomla) are written in PHP. Not only are the platforms open source, but so are most of their plug-ins.
– Easy to find a hosting company. PHP has been the industry standard since the stone age and any hosting company still surviving is bound to be compatible with it. For Node.JS you still need to make a little research.
– Simplicity. PHP can be run inside of the same file as html.
– Speed of coding. For most developers, writing PHP for Web apps feels faster: no compilers, no deployment, no JAR files or preprocessors — just your favorite editor and some PHP files in a directory.
– Mixing code with content. You just open up PHP tags and start writing code. No need for templates, no need for extra files or elaborate architectures.
– No client app is needed. All of the talk about using the same language in the browser and on the server is nice, but what if you don’t need to use any language on the browser? PHP is a way out.

NodeJS strong sides:

– Speed. NodeJS is blazing fast compared to PHP. This is where Node really kicks assJ.
– Separation of Concerns. NodeJS separates fundamental components up giving a clear separation of concern across controllers / routes, models and views.
– New and fresh. It’s newer in comparison to PHP and has been developed by programmers who have full knowledge and understanding of modern web applications, from the server to the client, and that means more modern features.
– Modern syntax. Javascript isn’t perfect and it may drive developers crazy, but overall it’s a modern language that supports modern syntax such as closures, and you can easily extend Javascript and make any object configured to exactly how you need it.
– JSON. NodeJS is a powerhouse for JSON. Accessing SQL is possible and there’s plenty of plugins that make it possible, but JSON is the lingua franca for interacting with many of the latest NoSQL databases.
– Gridlock. NodeJS uses a callback structure to pass logic from one asynchronous call to the next meaning we never have to worry about spawning new threads or even considering the deadlock process. Almost no function in Node directly performs I/O, so the process never block which is a major implication for scalable systems.

That is a difficult decision when it comes up to decide which language or tool to choose. But NodeJS worth considering and it`s proved by the fact that Node is getting more and more popularity every day. And what is your opinion on NodeJS, is it the future of web?

Anna Kozik

Anna Kozik
Anna.Kozik@altabel.com 
Skype ID: kozik_anna
Business Development Manager (LI page)
Altabel Group – Professional Software Development

In the history of computing first Java appeared, then close on its heels came JavaScript. The names made them seem like conjoined twins newly detached, but they couldn’t be more different. One of them compiled and statically typed; the other interpreted and dynamically typed. That’s only the beginning of the technical differences between these two wildly distinct languages that have since shifted onto a collision course of sorts, thanks to Node.js.

If you’re old enough to have been around back then, you might remember Java’s early, epic peak. It left the labs, and its hype meter pinned. Everyone saw it as a revolution that would stop at nothing less than a total takeover of computing. That prediction ended up being only partially correct. Today, Java dominates Android phones, enterprise computing, and some embedded worlds like Blu-ray disks.

For all its success, though, Java never established much traction on the desktop or in the browser. People touted the power of applets and Java-based tools, but gunk always glitches up these combinations. Servers became Java’s sweet spot.

Meanwhile, what programmers initially mistook as the dumb twin has come into its own. Sure, JavaScript tagged along for a few years as HTML and the Web pulled a Borg on the world. But that changed with AJAX. Suddenly, the dumb twin had power.

Then Node.js was spawned, turning developers’ heads with its speed. Not only was JavaScript faster on the server than anyone had expected, but it was often faster than Java and other options. Its steady diet of small, quick, endless requests for data have since made Node.js more common, as Web pages have grown more dynamic.

While it may have been unthinkable 20 years ago, the quasi-twins are now locked in a battle for control of the programming world. On one side are the deep foundations of solid engineering and architecture. On the other side are simplicity and ubiquity. Will the old-school compiler-driven world of Java hold its ground, or will the speed and flexibility of Node.js help JavaScript continue to gobble up everything in its path?

Where Java wins:

1. Rock-solid foundation

I can hear the developers laughing. Some may even be dying of heart failure. Yes, Java has glitches and bugs, but relatively speaking, it’s the Rock of Gibraltar. The same faith in Node.js is many years off. In fact, it may be decades before the JavaScript crew writes nearly as many regression tests as Sun/Oracle developed to test the Java Virtual Machine. When you boot up a JVM, you get 20 years of experience from a solid curator determined to dominate the enterprise server. When you start up JavaScript, you get the work of an often cantankerous coalition that sometimes wants to collaborate and sometimes wants to use the JavaScript standard to launch passive-aggressive attacks.

2. Better IDEs

Java developers have Eclipse, NetBeans, or IntelliJ, three top-notch tools that are well-integrated with debuggers, decompilers, and servers. Each has years of development, dedicated users, and solid ecosystems filled with plug-ins.

Meanwhile, most Node.js developers type words into the command line and code into their favorite text editor. Some use Eclipse or Visual Studio, both of which support Node.js. Of course, the surge of interest in Node.js means new tools are arriving, some of which, offer intriguing approaches, but they’re still a long way from being as complete as Eclipse.

Of course, if you’re looking for an IDE that edits and juggles tools, the new tools that support Node.js are good enough. But if you ask your IDE to let you edit while you operate on the running source code like a heart surgeon slices open a chest, well, Java tools are much more powerful. It’s all there, and it’s all local.

3. Remote debugging

Java boasts incredible tools for monitoring clusters of machines. There are deep hooks into the JVM and elaborate profiling tools to help identify bottlenecks and failures. The Java enterprise stack runs some of the most sophisticated servers on the planet, and the companies that use those servers have demanded the very best in telemetry. All of these monitoring and debugging tools are quite mature and ready for you to deploy.

4. Libraries

There is a huge collection of libraries available in Java, and they offer some of the most serious work around. Text indexing tools like Lucene and computer vision toolkits like OpenCV are two examples of great open source projects that are ready to be the foundation of a serious project. There are plenty of libraries written in JavaScript and some of them are amazing, but the depth and quality of the Java code base is superior.

5. Threads

Fast code is great, but it’s usually more important that it be correct. Here is where Java’s extra features make sense.

Java’s Web servers are multithreaded. Creating multiple threads may take time and memory, but it pays off. If one thread deadlocks, the others continue. If one thread requires longer computation, the other threads aren’t starved for attention (usually).

If one Node.js request runs too slowly, everything slows down. There’s only one thread in Node.js, and it will get to your event when it’s good and ready. It may look superfast, but underneath it uses the same architecture as a one-window post office in the week before Christmas.

There have been decades of work devoted to building smart operating systems that can juggle many different processes at the same time. Why go back in time to the ’60s when computers could handle only one thread?

Where Node wins:

1. Ubiquity

Thanks to Node.js, JavaScript finds a home on the server and in the browser. Code you write for one will more than likely run the same way on both. Nothing is guaranteed in life, but this is as close as it gets in the computer business. It’s much easier to stick with JavaScript for both sides of the client/server divide than it is to write something once in Java and again in JavaScript, which you would likely need to do if you decided to move business logic you wrote in Java for the server to the browser. Or maybe the boss will insist that the logic you built for the browser be moved to the server. In either direction, Node.js and JavaScript make it much easier to migrate code.

2. Build process simplified by using same language

Complicated build tools like Ant and Maven have revolutionized Java programming. But there’s only one issue. You write the specification in XML, a data format that wasn’t designed to support programming logic. Sure, it’s relatively easy to express branching with nested tags, but there’s still something annoying about switching gears from Java to XML merely to build something.

3. Database queries

Queries for some of the newer databases, like CouchDB, are written in JavaScript. Mixing Node.js and CouchDB requires no gear-shifting, let alone any need to remember syntax differences.
Meanwhile, many Java developers use SQL. Even when they use the Java DB (formerly Derby), a database written in Java for Java developers, they write their queries in SQL. You would think they would simply call Java methods, but you’d be wrong. You have to write your database code in SQL, then let Derby parse the SQL. It’s a nice language, but it’s completely different and many development teams need different people to write SQL and Java.

4. JSON

When databases spit out answers, Java goes to elaborate lengths to turn the results into Java objects. Developers will argue for hours about POJO mappings, Hibernate, and other tools. Configuring them can take hours or even days. Eventually, the Java code gets Java objects after all of the conversion.
Many Web services and databases return data in JSON, a natural part of JavaScript. The format is now so common and useful that many Java developers use the JSON formats, so a number of good JSON parsers are available as Java libraries as well. But JSON is part of the foundation of JavaScript. You don’t need libraries. It’s all there and ready to go.

5. Speed

People love to praise the speed of Node.js. The data comes in and the answers come out like lightning. Node.js doesn’t mess around with setting up separate threads with all of the locking headaches. There’s no overhead to slow down anything. You write simple code and Node.js takes the right step as quickly as possible.

This praise comes with a caveat. Your Node.js code better be simple and it better work correctly. If it deadlocks, the entire server could lock up. Operating system developers have pulled their hair out creating safety nets that can withstand programming mistakes, but Node.js throws away these nets.

Where both win: Cross-compiling from one to the other

The debate whether to use Java or Node.js on your servers can and will go on for years. As opposed to most debates, however, we can have it both ways. Java can be cross-compiled into JavaScript. Google does this frequently with Google Web Toolkit, and some of its most popular websites have Java code running in them — Java that was translated into JavaScript.

What is your opinion on what to choose Java or Node.js?

Polina Mikhan

Polina Mikhan
Polina.Mikhan@altabel.com 
Skype ID: poly1020
Business Development Manager (LI page)
Altabel Group – Professional Software Development

If you follow our blog regularly you probably remember that my last post was dedicated to Sitecore CMS. This time I decided to represent for your review one more powerful at the same time arguable CMS – Magento. Magento as well as Sitecore CMS is meant to build big things but this time in the world of ecommerce: helps to create online stores.

As the field of ecommerce is tending to grow and develop continuously IT solutions try to meet the needs and offer the best solutions to make it extremely innovative, make the managing process easier for holders and of course attract as many customers as it is possible. There are many CMSs for this purpose like PrestaShop, OpenCart, osCommerce, phpShop, Spree, nopCommerce and others. The choice of CMS depends on what kind of eCommerce/business you intend to go on. You need to take into account such aspects as the size of your firm, whether you haveB2B, B2C or you’re retail, what management system you use or you will use ecommerce platform for that, connection of you websites with other sales channels, your programming skills: PHP, .NET, etc.

So as you may see there are many CMS available today, the choice depends on what type of business you have and type of software you use. Nevertheless, beyond the rich variety Magento is considered to be one of the front runners.

Almost all claims that Magento is rather complicated system as it is built on Zend framework; however has a lot positive aspects. Generally it is characterized as big, complicated and powerful CMS/platform that provide excellent and multiply options to grow you website.

Magento is also very serious CMS and there is no doubt that it is not for everybody. It is tool for professional rather than for amateur.

-It rather complicated to use and work on it for its coding style, so be prepared to spend/charge from your development team twice more hours than usual. Also if you’re not experienced in coding or working with this CMS we would offer to hire skillful developer/development team with proven past experience to help you with that. Based on our experience working with Magento you should be prepared that the development process could take much more time as you will need to learn all the curves that CMS has.

– Magento is extremely powerful offering a wide range of customization options. It is easy-editable gives an opportunity to improve the code regularly by making updates and fixing bugs. And what is important here is that code itself doesn’t require any changes!

– One more aspect is the rich variety of features that makes Magento so flexible. Let’s now review the key features of Magento:

  • International support – multiple languages and currencies, list of allowed countries for registration, purchasing and shipping, localization;
  • Site Management – control of multiple web sites, multiple languages.
  • Catalog Browsing – easy navigation, advanced product filtering system, product comparison.
  • Catalog Management – inventory management, batch import and export of products, different tax rates per location, additional product attributes.
  • Analytics and Reporting – integration with Google Analytics and offers different reports.
  • Payment – different payment methods: credit cards, PayPal, Authorize.net, Google Checkout, ePay, etc.
  • Marketing Promotions and Tools– coupons, discounts and different promotion options.
  • Encryption Key – security storage of the sensitive data in the script’s database.

 

It is also scalable and it grows with your business. That’s the point why it is mostly recommended for mid to large size vendors.

Additionally it should be said that Magento team offers 24/7 live support. Of course it is not super fast but at least it works and you never know when you will need immediate help. Moreover it has video tutorials, good knowledge base, webimars, user guides and support forum. As Magento has three versions the opportunities of each version differs: Community Edition (downloadable version, you will need to find hosting and security for your store), Magento Go (cloud based of hosted Magento CE, preferably for small retailers) and Enterprise one, the last is complete ecommerce solution, fully supported and it is not cheap. Here it should be noted about technical support: Community version has an access only to the forums that are not so active mainly because Magento is relatively new and don’t have yet many followers. So there is no guarantee that you get an advice you need.

And at last as Magento is open source CMS it is free and you don’t spend your money to download it. But you will need to invest if you want to have store live.

At the same time (there is always the other sideJ) there are gaps (that make this platform a bit vulnerable and look unfinished) that need to be improved too. We have a made a short list of them:

  • Slow – Many reports that the software is clunky and suffers from slow load times.
  • Expensive – Even it is open source and free it will end up costing you after you add up hosting, security, and developer fees.
  • No Customer Support – Magento CE users have no access to technical assistance with the exception of a forum.
  • Requires Coding Experience – it requires users to have technical skills and experience in order create and launch stores. It is not for amateurs or hobbyists.

Some more aspects to consider:

  • Confusing and hard to learn.
  • Difficult to implement templates.
  • Not much themes to choose.
  • Software updates don’t work always properly.

To use Magento or not?

In my opinion Magento is proved to take one of the leading positions and has potential to save it. It has many positive aspects and if your business is well developed and you have large list of items to put online, you need to consider Magento and invest money in it. But of course be prepared for serious work with all the curves if you don’t have much knowledge in programming or take care to choose the development team wisely. And certainly don’t forget about tech support, Magento CE don’t have it.

In case you still considering whether adopt Magento for your business or not, feel free to share your personal experience with us leaving your comments below or contact me directly if you need assistance with your ecommerce shop to discuss the details.

Thank you for your attention!

Katerina Bulavskaya

Business Development Manager

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

For some years, Agile methodologies have been widely adopted within the information technology software world to bring new products and services to market quickly and efficiently, increasingly taking over from more traditional approaches such as ‘waterfall’. While it may have promised much, Agile has not been without its critics, who say that it does not live up to expectations, that users can become too bogged down in the processes and lose sight of the end goal. They also fear Agile projects become siloed into teams, rather than being visible to the organisation as a whole.

However, as an increasing number of companies are finding, Agile CAN deliver on expectations, if some simple principles are followed: what might be called “pragmatic agile”. Supporting tools also have a role, such as SCM (software configuration management). SCM can help ensure that a project remains visible to all the key stakeholders, while supporting Agile-related tactics such as Scrum.

Agile explained

So exactly what is Agile? First introduced in the late 90s, Agile methods are well established in the software development world as tools to accelerate time-to-market. They aim to emphasise the items on the left below, while still appreciating the value of the items on the right:

– Individuals and interaction – over processes and tools
– Working software (or product) – over comprehensive documentation
– Customer collaboration – over contract negotiation
– Responding to change – over following a plan

Taking these elements individually, let’s look at what they mean in practice.

Individuals and interactions – over processes and tools

This does not mean that there is not a place for processes and tools – of course, there has to be – but Agile is very much about people communicating with each other, ideally verbally and not just via email. A common communications element of Agile methods are daily meetings, or “stand-ups,” to review the current status of a project and to iron out issues before they escalate. In Scrum processes (see later), planning meetings provide an environment in which to understand requirements of the backlog and how to address them with collective support on the effort required. This approach helps to engender more creative thinking, because people have an environment within which they can safely suggest ideas.

So given this environment, how might tools provide support? As an example, a strong SCM system is invaluable in two ways. First, it provides visibility into how all the work fits together to deliver a working product. Second, it allows features to be developed in parallel across Scrum teams, or to move changes between sprints if work has not been completed as expected.

Working software (or product) – over comprehensive documentation

Whatever the project – whether in mainstream IT, games development or embedded software design – all too often, projects can become unwieldy, with the temptation to ‘over engineer’ and lose sight of the original goal and deadlines. Agile encourages teams to maintain focus on the outcome. This can mean delivering a working version of the software that may not have 100 percent of the features originally planned, but the product still has usable functionality. A central tenet of Agile is to take an iterative approach: it is more effective to deliver a product early and then continue to improve, rather than delay time to market.

One common Agile method is Scrum. Scrum is an iterative and incremental Agile software development framework for managing software projects and product or application development. Here’s a quick overview of the Scrum framework from the Scrum Alliance:

A Product Owner creates a prioritised wish list called a product backlog. The Product Owner is a proxy for the customer when determining features and priorities.
During sprint planning, the team pulls a small chunk from the top of that wish list, a sprint backlog, and decides how to implement those pieces.
The team has a certain amount of time, a sprint, to complete its work – usually two to four weeks – but meets each day to assess its progress (daily scrum).
Along the way, the Scrum Master keeps the team focused on its goal.
At the end of the sprint, the work should be potentially shippable, as in ready to hand to a customer, put on a store shelf, or show to a stakeholder.
The sprint ends with a sprint review and retrospective.
As the next sprint begins, the team chooses another chunk of the product backlog and begins working again

Customer collaboration over contract negotiation

In this context, customers can be internal colleagues, not just external. In any design process, there is always a danger that once a brief is agreed, the team then goes away and develops the prototype, only to find that it no longer meets the requirements of the ‘customer’. An Agile approach includes regular communication with the customer, to get his or her ‘buy-in’, so that once the product is developed, they know what to expect and have been involved throughout the development process. This can mean working with non-technical colleagues, perhaps in the product marketing department, on a level not experienced before.

Responding to change – over following a plan

Of course, solid planning is usually essential, however within that framework, Agile prescribes that it is important to be able to respond to change and be flexible. After all, when a project can take months or years to deliver, it is not surprising when market or customer requirements change.

Some deadlines, like manufacturing lead times, are hard stops in the schedule. Does that mean the project can’t respond to changing requirements? Quite the opposite. It means that, until the project hits that deadline, the team has to be as Agile as possible, embracing continuous delivery principles.

Agile – how SCM helps get it right

So far so good, but Agile can – and does – go wrong. Here are three pain points that organisations typically face and how version management (or software configuration management) system can help:

Latency – while the intention may be there, in practice it is easier said than done to prevent delays. One of the biggest bottlenecks can be retrieving source files from a repository or opening in dynamic views. Continuous integration (CI) can help address this, by ensuring that the software works at all times, not just as it is being released.

Far-flung teams – this is one that Agile didn’t see coming, at least at first. The movement emphasised co-location and collaborative programming, with daily-stand up meetings and shared workspaces. However, thanks to outsourcing, the need for differently skilled teams, particularly when building hardware and software products, and high-speed connectivity, vastly distributed development is now commonplace. Again, SCM can help support this, enabling distributed teams to keep track of what has happened and what is happening, collaborate with colleagues, but carry on working on their own projects.

Varied workflows – during the development process, multiple teams will be involved working on different elements and each team may have its own workflows. For example, the process used by the software development team is likely to be different to that used by the documentation team and the hardware design team. These teams will also be working on very different asset types – source code text files, large binary files for hardware designs or documentation PDFs. The best SCM systems should be able to handle all the different content types and workflows such that all teams work the way they want to and have visibility in all parts of the project.

Agile lessons from the games industry

The game development industry hit a number of the same roadblocks, yet many have been very successful with Agile methods, not least Perforce customers. Game developers are successful with Perforce because the tool actually increases collaboration and communication: a key Agile principle. SCM – or version management – lets the entire team, no matter the discipline, store and work with their data in a common repository.

Hardware engineers can manage their huge design files, while firmware engineers can work with their driver code, and the software developers can of course participate fully. Each team can work semi-independently, yet still make their work visible and useful to the rest of the shop early on. For example, a firmware engineer can always load the latest approved hardware simulator designs for testing.

Given that the cross-functional teams may not be at the same location and may use very different schedules and workflow, it is important to build communication into the tools and processes. The SCM system should lend itself to modern task management techniques, like task branching and pull requests. These processes improve quality and build communication into the way the organisation works.

Conclusion

Time to market has never been a more critical element of product development than it is today. Ensuring that products fit customer demand is what makes products profitable. Agile methods, particularly Scrum, offer a chance to address both challenges. A strong SCM tool is required to enable distributed, multi-skilled teams to fully exploit the promise of Agile methods.

 

Kristina Kozlova

Marketing Manager

 

altabel

Altabel Group

Professional Software Development

E-mail: contact@altabel.com
www.altabel.com

Answers to this question will depend on the organization type. If you are into purely IT organization (i.e. Software development) then the prioritization in technology is absolutely correct. But if we’re talking about IT divisions in other organizations (i.e. large manufacturing firms, FMCG, etc) then the priority will be changed. Since entire technology now in era of transforming into SaS and cloud base architecture I think it will be much better to have skills in that area. Because IT divisions is seeking for IT professionals who have set of skills in SaS and cloud.

Here are the IT skills that will be in demand in 2012 according to Computerworld’s annual Forecast survey:

1. Programming and Application Development – This covers the gamut from website development to upgrading internal systems and meeting the needs of mobile users.
2. Project Management (but with a twist) – The twist is that companies are not going to just be looking for people who can oversee and monitor projects. They also want people who can identify users’ needs and translate them for the IT staffers – the increasingly popular business analysts.
3. Help Desk/Technical Support – Mobile operating systems have added a new dimension to help desk and tech support.
4. Networking – This demand is being fueled partially by virtualization and cloud computing projects. The survey also revealed that execs will be looking for people with VMware and Citrix experience.
5. Business Intelligence – A shift in many companies, from cost savings to investing in technology. That will be nice if it pans out that way.
6. Data Center – Virtualization and the Cloud could also be behind the increased need for IT professionals with backgrounds in data center operations and systems integration.
7. Web 2.0 – Tech skills centered on social media will be in demand, with .Net, AJAX and PHP as key back-end skills, with HTML, XML, CSS, Flash and Javascript, among others, on the front end.
8. Security – Security stays a top concern.
9. Telecommunications – The survey indicates a demand for people with IP telephony skills, and for those familiar with Cisco IPCC call center systems.
10. Mobile – The future is heading mobile. Skills in the various OS systems as well as HTML5

Besides hard skill, I would also list soft skill and the ability to align and connect with business. At the end we need to deliver to the business and add value. Understanding business strategy and processes are important.

What do you think?

Kind Regards,
Lina Deveikyte
Altabel Group – Professional Software Development


%d bloggers like this: