Posts Tagged ‘Programming’
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.
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.
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.
– 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?
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!
Business Development Manager
Professional Software Development
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.
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.
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.
Professional Software Development
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.
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?