Tag Archives: development sources

ios development interview

From QA to iOS Development: Life Story of the Career Switch.

Switching the career path and changing long-term ambitions is never an easy choice. Still, in many cases this step is feasible, living up the new hopes and professional growth. In the sphere of web/app design and development this sort of situation is, perhaps, even more common than in the others due to the dynamic and rocketing progress of information and communication technology in the world. New professions and positions pop up like mushrooms after the rain, opening totally new perspectives and allowing professionals to set new ambitions.

 

Our today’s story is of this kind: Tubik iOS developer Maxim Pedko will share his experience of the career switch from QA engineering and project management to iOS development. Check out the interview and get inspired!

 

iOS developer tubik studio

 

How did you make the decision on your career choice?

 

Actually, I had quite extensive and various experience: before the first step in development, I worked as a QA engineer and project manager. Still, my big dream getting stronger and stronger was to create real products by myself. One day, working over current tasks, I realized that I have to change my life and try something new that will get me closer to my ambition. I had studied the basics of PHP, web development, CMS and it even let me earn something for a living, but didn’t give me real pleasure from my work. I developed simple plugins for CMS WordPress, but I didn’t feel it like the full-scale development as the plugins were focused mainly on correction of existing design according to client’s requirement, not more. That job wasn’t bad, it was just not the one for me as I didn’t get either aesthetic or professional inspiration.

 

Why did you choose Apple as the field for your career growth?

 

I deeply and sincerely fell for iPhones and other products by Apple after their first presentation. That distant day when Steve Jobs presented a new revolutionary buttonless mobile phone with a beautiful photorealistic interface, called iPhone, they won me over with their design and usability. Since then, I have been a keen fan of Apple, although unfortunately, I didn’t have a chance to get their devices for myself. Certainly, a lot of things have changed since the presentations of the first iPhone, iOS, iPad, yet I am still the supporter of this company products and philosophy.

 

Swift vs Objective-C. Why did you choose Swift?

 

Before I started programming for iOS devices, I had analyzed the well-known and established Objective-C and newer Swift. For me, the issues to consider were the following:

  • Swift is easier readable than Objective-C
  • Swift is easier maintained and supported
  • Swift requires less amount of code
  • Interactive coding is available at Swift Sandbox
  • Swift is the platform for the future, as Apple have outlined their intent of the full switch to this programming language.

 

ios development interview

 

Where does the way of iOS developer start?

 

To start developing iOS applications, first of all, you need high motivation and wish to grow professionally. Without the great desire to self-develop and study the field in detail, it’s better not to start, moving yourself to the further search of the domain you are interested in. Starting the career in iOS development, you should be ready to some aspects that won’t let you do it from the very first day. For instance, you won’t be able to code iOS apps without a computer from Apple! You will need Xcode which works only on MacOS.

 

I have tried the software that is argued to enable developers to code for iOS on other operational systems: it took me ages to install it via virtual machines and tune the soft into more or less working condition, still it didn’t work efficiently and heavily overloaded the computer. There were even the moments when I got so frustrated that wanted to throw away my computer through the window and forget it as a nightmare. So, I had to accept the rules of the game that there’s no other way than coding for iOS on MacOS.

 

Another essential thing to mention is that to develop iOS apps you really need only Apple computer still it’s not required to buy all the existing devices like iPhones, iPads, Apple Watches etc. Xcode has simulators of all the devices with which the application will be potentially used so having developed the application for one of them, you can instantly test it on the simulator of the device.

 

ios development glossary

 

Anyway, if you have bought an Apple computer, set up Xcode and are ready to code iOS apps, you will need the reliable source of information, knowledge and practice in studying Swift. There are numerous materials on this topic shared via YouTube, such as video lessons and vlogs; also you will definitely find the text-based sources like blogs and forums for developers, but the most reliable, actual and truthful source of data for you is the official website for Apple developers.  Another useful resource is Swift website  presenting lots of tutorials and practice for studying Swift coding and I would also recommend the interactive course Developing iOS 9 Apps with Swift. No doubt, to keep up-to-date, iOS developer should never miss conferences and presentations  from Apple.

 

What are the other domains of knowledge needed in this sphere?

 

I have to admit that basic knowledge plays the vital role for professional growth in this field. Before you start to learn programming not being a native English speaker, you have to understand that without knowing English solidly you’ll get the experience when the best and the most reliable sources on not only iOS, but also programming, in general, are shut for you. That’s the reason to constantly improve and practice the language even if you think you know it well.

 

If you don’t own Apple computer working on MacOs, it’s not the reason to get in despair. You have to plan your steps and study everything that you will potentially need in the future. Before starting iOS development, I had studied operations in client-server applications, REST API, basics of OOP, databases, base operators, types of data, — everything that can be studied before starting real practice in coding on Swift.

 

Could you share your real experience that allows considering the possible risks?

 

As I’ve mentioned, to get real experience you will obviously need an Apple computer. If you don’t have it, try asking your friends or finding hubs where you’ll be able to try actual programming on Mac. It’s vital to understand if you really want to continue your professional way in the sphere as, you see, the start needs some basic capital, at least in the form of quite expensive hardware.

 

When you start getting real experience in development, don’t be afraid to start coding for real simple projects and get precious practice of both development and communication with customers. That’s important to make your name in this highly competitive sphere and open new perspectives for complex and interesting projects in the future.

 

If by any reason you are afraid of freelance platforms or frightened to be cheated, working on your own projects you should carefully plan the tasks and set the deadlines. There are many good sources where you can buy lessons or get them free, and there you are provided with the practical tasks which you are obliged to complete. You have to be persistent, try and study, be always open to new knowledge in development, — this is the only productive way to the day when you start creating efficiently working code.

 

As for me, to get the knowledge and practice of iOS development without having my own Apple computer, I did my best to get enrolled to Tubik Studio as an intern. To get more practice and have more hours of effective studying, I took the risky step having left my previous workplace and devoting the maximum of time to progress in what I saw my future. After two months the risk paid off: I got an offer of the full-time developer’s position in the iOS department. Moreover, I’ve got the precious experience of working in team of professionals that opens the door to more complex, sophisticated and significant projects, shut for freelancers working solo.

 

tubik studio developers testing

 

And my message to those who start this way is the following: it’s not enough to buy the original computer, it’s not enough to narrowly focus on one aspect of the job without studying the others. It’s vital to realize that whatever is the sphere of development you see yourself in, you should get filled with new knowledge on a daily basis, and only persistence, hard work and self-education will bring you to being a productive and highly-skilled developer.


Welcome to read more articles on iOS and web development

ruby on rails web development

Ruby on Rails Development: Benefits and Pitfalls.

As a web developer, it’s important to understand the interconnectedness of the various parts of digital design and development. Like a bridge, each pillar supports the span, and if any one of them fails, the whole thing collapses. Bad design can ruin well-written code as well as badly written code can bury the most sophisticated design solutions. Every part plays a role in the desired outcome — a user-friendly product.

 

In earlier posts, we have given you some insight into the vocabulary, processes, and tools of web development. This post is going to continue that theme. We’re going to talk about one of the popular tools for web development — Ruby on Rails — and share with you some of its benefits and pitfalls.

 

Brief background

 

Let’s start with a bit of history. Ruby is a dynamic, object-oriented, open source programming language with a focus on simplicity and productivity. Created by Yukihiro “Matz” Matsumoto, the original version of the language, Ruby, was first released in the 1990s. Today, it powers well-known websites such as the original version of Twitter, Hulu, Living Social, Basecamp etc. Many companies use Ruby in some capacity — BBW, Cisco, CNET, IBM, JP Morgan, NASA, and Yahoo — because Ruby has a framework which supports a high level of flexibility for developers.

 

 

“Ruby is named after the precious gemstone; it’s not an abbreviation of anything. When I started the language project, I was joking with a friend that the project must be code-named after a gemstone’s name (àla Perl). So my friend came up with «ruby». It’s a short name for a beautiful and highly valued stone. So I picked up that name, and it eventually became the official name of the language.” said Yukihiro «Matz» Matsumoto, the creator of Ruby, in his interview about the roots of the programming language.

 

Ruby on Rails is an open-source web application framework for the Ruby programming language optimized for programmers’ sustainable productivity. David Heinemeier Hansson extracted Ruby on Rails from his work on the project management tool Basecamp at the web application company also called Basecamp. Hansson first released Rails as open source in July 2004. Major brands like Amazon and eBay even have Rails projects.

 

“Rails (Ruby on Rails) was extracted from my work on Basecamp—a project collaboration tool from 37signals. So it was motivated by needs, not predictions. And I believe that’s a big part of why we’re currently enjoying such success. I didn’t try to imagine what some programmers might need for a fantasy job. I just built what I needed to get my work done with a smile.” says another interviewee David Heinemeier Hansson, the creator of Ruby on Rails.

 

ruby on rails web development article

 

What is Ruby on Rails?

 

Ruby on Rails, often just called “Rails”, is a development tool that gives web developers access to libraries, thus providing structure for all the code they write. It is a server-side web app framework that extends the Ruby programming language. Ruby is the operating language for Rails in the same way that PHP runs Symfony and Zend, or Java runs Struts. Rails combines the Ruby programming language with HTML, CSS, and JavaScript to create a web app. This framework uses Ruby to dynamically assemble HTML, CSS, and JavaScript files. Rails helps developers to build websites and web apps by abstracting and simplifying common, repetitive tasks.

 

Rails apps operate on a model–view–controller (MVC) pattern. Many other web frameworks use this pattern, such as AngularJS (JavaScript), Django (Python) and CakePHP (PHP).This means that the apps are divided into three parts: models, views, and controllers. These components have the following roles:

 

Models. Used to represent forms of data used by the app, they contain the logic to manipulate and retrieve that data. In Rails, a model is represented as a class. These forms of data are not low-level like strings or arrays.

 

Views. Templates (typically formed of a mix of HTML and Ruby code) that are used to build the data users of web apps see in their browsers or through other clients. They can be rendered as HTML for web browsers, XML, RSS or other formats.

 

Controllers. Provide the logic that binds together models (their associated data) and views. They process input, call methods and deliver data to the views. In Rails, controllers contain methods known as actions that, generally, represent each action relevant to the controller, such as “show”, “delete”, “view”, etc. The framework can be used with various operating systems such as Windows, Mac OS X and Linux; databases such as SQLite, MySQL, PostgreSQL; and web servers such as Apache and, Nginx.

 

There are a few core principles in web programming that drive developers’ approach to projects. One of the main ones is “convention over configuration” (CoC). In other words, developers don’t have to spend a lot of time configuring files if they follow standard industry norms. Rails comes with a set of conventions which improve development efficiency.

 

 

Another important principle of software development in Rails is “don’t repeat yourself” (DRY). Developers should always look to avoid duplication in their code, and rather isolate functionality in small functions or files. This principle promotes the use of modular code, which is easier to understand, read and debug. When code is duplicated, the outcome becomes more complex, making it more difficult to maintain, and more vulnerable to bugs.

 

Ruby on Rails uses Representational State Transfer (REST) architecture that governs the relationship between the client and the server. This architecture helps create logic in the app, and produces code that developers find highly intuitive and functional.

 

Another great Ruby extension is RubyGems, a package manager that makes it easy to create and share software libraries (“gems”). RubyGems provides a reliable and simple system to install “gems”. Anyone can upload them to the central RubyGems website, making the “gem” immediately available for installation by others. The RubyGems website is where developers obtain the most recent version of Rails.

 

ruby on rails web development

 

Benefits and pitfalls of Rails

 

Just like any tool or software, Ruby on Rails has its pros and cons that you need to consider before choosing it as your development architecture. Let’s take a look at those based on feedback from our developers.

 

Benefits for developers of Ruby on Rails

 

Large Community. Rails is more than a development tool; it is a large community of dedicated developers. Members share their work, often use the same tools, and support each other. The informal community provides a diversity of jobs, recruiters, meetups, conferences, examples of businesses building websites with Rails, and clients funding startups. It is no surprise that Rails is popular on the social coding resource Github, which is a great source of support for beginners.

 

Availability of gems. A “gem” is a software package that contains a Ruby app or library. Commonly it is used to extend or modify functionality in Ruby apps. Some “gems” provide command line utilities to help automate tasks and speed up the developer`s work. They are all publicly available at RubyGems.

 

Cost-effective. The process of building functionality with Rails is fast because it has a collection of open source code available within the community as well as a set of existing conventions. Ruby on Rails also runs on a free operating system and works with most free databases and web servers. These features mean fewer development hours, faster development process, and a lower overall cost.

 

Code Quality. Rails uses the Ruby programming language, which has a high level of readability. This aspect increases productivity and reduces the need to write separate documentation or comments, which makes it easier for other developers to pick up existing projects.

 

Testing. Rails was developed with a focus on testing and has good built-in testing frameworks.

 

Diversity of tools. Rails provides a tremendous variety of tools that help developers deliver more features in less time. For example, there are built-in templates for common functions and solutions.

 

Flexibility. One of the biggest benefits of using Ruby on Rails is that it is highly flexible and interacts easily with technologies and frameworks like AngularJS. This factor offers developers the opportunity to separate layers of the app and use multiple technologies.

 

web development ruby on rails

 

Potential Ruby on Rails pitfalls

 

Performance. While Rails apps are often not as fast as Java or C apps, for the majority of them, Rails is fast enough. In general, Rails web apps slow down as a result of bloat, and a highly-skilled programmer can tune the code to improve performance. There is also the option of running the app under JRuby, which has the same performance characteristics as Java.

 

Hosting Issues. Not all web hosts support Rails because it can be more resource intensive than PHP-based sites. However, there are a number of hosts (Virtual Private Servers) such as Amazon EC2, EngineYard, Linode or Rackspace, which will fulfill Rails developers’ needs.

 

Popularity. The number of Rails developers is growing year by year as more people switch to it from other programming languages. Yet, Rails is still not as popular as Java and PHP, in all likelihood because the language is relatively difficult to learn, especially compared to PHP. However, one of the main differences between Rails and other languages is the large amount of open source code (“gems”) which is publicly available. “Gems” are helpful for beginners as they simplify the process of web development.

 

Lack of documentation. It can be hard to find good documentation for the less popular “gems”, and for libraries which make heavy use of mixins. Developers often end up finding the test suite playing the role of documentation and they have to rely on it to understand the behavior of the written code. This aspect isn’t bad in its essence, as the test suite should be the most up-to-date representation of the system; however, it can still be frustrating having to dive into code, when sometimes written documentation would have been much quicker.

 

 

web development

 

To sum up, Rails is a huge web app framework with a large number of built-in features. It can be used to create either small or large apps, but it tends to use more memory and resources than the other frameworks and performance can be a bit slower. In the majority of cases, Rails apps will be composed of dozens of files tight structure of models, views, and controllers. The framework is becoming increasingly popular because it is powerful, standardized, and well-established.


Check out our other articles on web development