Blogs

   

         According to Rick Cook, “Programming today is a race between software engineers striving to build bigger and better-idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.”

Programming is indeed a breakthrough towards technological advancement. The marvelous works of computers, programs, applications and software have transformed the world. In this race of creating, developing, unfolding and transforming something extraordinary out of the ordinary, how can you actually win?

Well, for a programmer to win, he or she must overcome all the daily struggles of their job to achieve a certain set of goals. They need to embroil and submerge themselves into the nitty-gritty of everything. This includes the entire process of software development plus the agonizing struggles and challenges that may come along the way.

So, you better get ready and brace yourself! Here are some compelling reasons why the struggle is real for programmers.

1). Exhausting Relationship with Coding

                                                                                                   

A programmer must have a certain long-term relationship with coding. It is actually the backbone of any system so you need to to bear the agony of this process no matter how tiring it can be. You must be willing to code and code and code up to the point, wherein you can no longer open your eyes. Coding is never easy and it will consume a lot of your time. Sometimes it feels like its never-ending! It is truly wearisome not just physically but mentally.

2).  Enduring the Hassle of Debugging

 

                                                                        

  The process of debugging is actually the greatest struggle of a developer. This is much more difficult than coding because some bugs are not easy to find and fix. Thus, this is definitely a pain in the ass.

3). Updating and Refactoring Can Kill You Sometimes

    

                                                                                             

       As much as overthinking about the codes and functionalities may stress you out, sometimes updating and refactoring can kill and turn your work into a mess. Yes, imagine those moments wherein you’ve think of another way of doing something and you’ve changed and refactored and deployed it. But in the end, it doesn’t work? Thus, with full of regrets you just decided to start over again and delete everything. How awful and saddening, right?

4). Puzzling Moments of “Why and How” Codes Work

                                                                                               

 Who says that existential questions are not applicable to coding. Indeed, programmers are also faced with a lot of questions especially why a code is not working or how it functions? Maybe, how the problem started or where the error is coming from? You know, mind-boggling questions might actually sprout during the process of development and even testing. Thus, it is really a struggle for any programmer to have a clear grasp of designing and analyzing techniques.

5). Customizing Requires Additional Effort

                                                                                              

     Customizing requires a lot of effort from a programmer especially if you’ve already finished the system or the application itself. Thus, in the beginning of a project it is important to customize the system or program based on the needs of a client or establishment. Plan ahead for the features in need to be customized. Nonetheless, if will be a disaster.

6). Fixing Errors and Understanding Syntax Format

                 

                                                                                                         

     Fixing errors is also a struggle especially for the newbies. Thus, it is important that you are equipped with technical knowledge and skills. Familiarize yourself with basic programming languages and understand the format and syntax upon it. Remember syntax is very important and strict adherence to it must be observed!

7). Ensuring Compatibility of the Software

                                                                                                               

    Compatibility should always be a priority for a programmer or developer. From time to time, it is important to check if the software is compatible with a specific Internet browser or device. Imagine how tiring and time consuming it can be. Checking the security is also an additional factor to be considered.

These are just some of the daily struggles that a programmer of software developer might actually come across with. At the end of the day, nothing comes easy! Every day is a good fight and it is up to you if you’ll take the challenge.

For it is only through these daily struggles, where you can actually see what you are capable of as a programmer. Understanding your struggles might give you a hundred more reasons to love your job and strive harder. Keep on believing and never cease to grow. Now you can finally say that “The struggle is real!”.

 Image Sources:

Image 1 Link: http://giphy.com/search/programmer

Image 2 Link: http://www.phdcomics.com/comics/archive.php/archive/tellafriend.php?comicid=673

Image 3 Link: http://www.streamoverlaypro.com/development-blog/

Image 4 Link: http://gifsec.com/funny/why-gifs-2/

Image 5 Link: http://giphy.com/search/hard-work

Image 6 Link: https://giphy.com/gifs/3o85xn8b6TuGGTnSOk

Image 7 Link: https://www.goodreads.com/review/show/889302467

 

            

 

Published in Software Development
Thursday, 29 September 2016 14:48

A Software Is Not Just About The Software

 

 

Most of us view a software just on a surface level. It may just be something that you install so you can perform an activity, but in the realms of software development, a software undergoes several stages prior to implementation, development or use. A software can just be an app running in your mobile device that does a specific purpose like navigation, social media or even games. But did it come into mind that that simple software undergoes extensive planning, business and systems analysis, coding and testing? Did it come into mind that probably that software is linked or interfaced to another software, database or infrastructure component? Probably not.

Software architecture (or software engineering) is designing a software or an application by planning what should go with it, how it could be linked to somewhere, what infrastructure components it requires and designs an application or software that is capable of future improvements or linkages to extend software shelflife or extend the actual software life. Software development requires extensive resources so that we enjoy the things that we have now, specially in the aspects of planning, analysis, design, development and testing. It is not just one hit and miss thing, for even the smallest of applications may take time to be rolled-out to what we can use. If such is a one-time thing, then we cannot enjoy it for quality and security can be questionable. There is also such thing called as software maintenance, where small improvements like logical and program bugs can be fixed while the software is being used. This is so as to improve the quality and runtime of the software itself and the interfaces like databases and linkages to other systems  can be fixed for small issues like security and outputs.

In the facet of both open source and commercial software, the same concept applies. Each software released via these markets both undergo with such processes. However, in commercial software, all of the processes are done by the software company’s internal software development team, while in open source software, software enthusiasts do it independenly as long as the concept of the software is directly linked to one another. To cite an example, the Linux Operating System can be composed of several software that are developed by thousands of Linux enthusiasts around the world, but we users, see it as Linux the operating system that has capabilities of doing browsing, office processing or even audio and video. For the Microsoft operating systems, it is composed of several programs or applications (also called as DLLs, or dynamic link libraries, that work hand in hand) so we can enjoy Microsoft Windows as a whole. Same goes for even the Microsoft Office suites.

The discipline of software architecture or software engineering is somewhat similar to building a house. Software architects build the foundation of the application, like what Civil Engineers do. And software architects put on the provisions for current and future use, just like what Civil Architects do. Each software relies on a robust and strong foundation that should be built with future plans in mind, not just for what is in store. If a building is constructed with the provision of additional floors in the future, then the building foundation should be prepared for it, with or without the expansion plans.

Software architecture or software engineering is making fundamental structural choices which are very expensive to change once implemented. Software architecture or enginerring choices include specific options from possibilities to what lies ahead in the design of the software.

 

This is the same concept applied to even small applications like mobile apps. What would be the future direction of these applications? Are they going to be interfaced with your social media accounts later on? Or the owners of the software are just contented of leaving the software it is and let it die a premature death causing expenses on the development cost? Or is the application supposed to be improved later on with the provisions of multiple online gamers that can play with each other or together?

So the next time we see a software, imagine the costs and activities that went through with its inception and development. A software is not just a software, a software is a piece of the puzzle that undergoes extensive planning, architecture so that it can be improved in the future and we users, could enjoy it more. The more we enjoy it, the longer we use it, and the longer we use it, the more justifiable the software’s life it is for us users.

 

 

Image Source: www.Freepik.com

http://www.freepik.com/free-photo/laptop-with-different-applications-installed_902746.htm#term=software&page=1&position=0 

 

 

Published in Software Development
Thursday, 08 September 2016 10:21

Hardcoding Vs. Softcoding

 

Are you torn in between hardcoding and softcoding? Well, in the plethora of codes, you may have probably asked how hardcoding differs from softcoding? Are they one and the same? Is hardcoding really hard? When should I use such?

Apparently, these are just some of the normal questions that a person may have. Don’t worry we are actually on the same page, come and let’s unfold what each concept means!

What is Hardcoding?

According to John Spacey (2016), hardcoding is defined as a practice of embedding things in code or the placement of values and functions in a code. This is usually avoided by programmers because it entails the use of complex programming techniques. System maintenance is also on the hard side.  This is also the reason why hardcoding is normally performed by programmers only. 

What is Softcoding?

On the other hand, softcoding is known as the placement of values and functions to configure or modify the codes. This is preferred by business operations because even the users can change the functionalities of a software even without the presence of the programmer. (Spacey, 2016) In this type of coding, users are allowed to customize the software according to their needs.  It gets the information externally from the outside.

How to differentiate hardcoding from softcoding?

On a more technical level, an entity may contain both codes either through hardcoding of softcoding. According to Michael Blaha in his book entitled Patterns of Data Modelling the two concepts are very different from each other as listed in the table below. If you are a programmer this might not be new to you.

 

Table 1: Hardcoding Vs. Softcoding (Blaha,2015)

                                  System values (hardcoded)           Other values (softcoded)

 

        Hardcoding

              Softcoding

Certainty

Hardcode attributes that are certain

Softcode attributes that are uncertain or may be added during or after development.

Indexing

Limited to at most one value

for an entity- attribute combination

Permits multiple values for an entity attribute combination

Multivalues

Awkward to record

Straightforward to record

Value meta

data

Name, timestamp

Descriptive data

 

 What should I use?

          If you are still puzzled on what to use, you can start by thinking about… What will work best for you as a programmer or as a user? Actually, it will solely depend on your approach, requirements and the structure of the system that you’ll be creating.

You can just say that the easy way out would be softcoding especially if you want to customize everything for your users.  If you find it challenging to do coding deep down the source, hardcoding may be the best choice for you! It may be tedious but if you’ll count on your expertise the outcome might be fruitful for you.

Just remember that no matter how you enjoy each one. There are also instances that you need to use both. This is also the reason why even novice programmers are entitled to know both types of coding.

At the end of the day, there would be no harm in learning both, right? Who knows? This might come in handy in the future!

 

 

References:

Spacey,John. Simplicable Online Website Article (September 5,2016).Hardcoding VS. Softcoding Retrieved from http://simplicable.com/new/hardcoding-vs-softcoding

Table 1.Hardcoding Vs. Softcoding. Adapted from “Patterns of Data Modeling ” by Michael Blaha, 2010, Copyright 2015 by Taylor & Francis Group CRC Press Retrieved from  Google Books Link: https://books.google.com.ph/books?id=s_IbDAAAQBAJ&pg=SA13-PA9&lpg=SA13PA9&dq=table+hardcoding+vs.+softcoding&source=bl&ots=c9o3BH7bq0&sig=fZKTqE3kWdOcoFfMTRvEFQrtmlE&hl=ceb&sa=X&ved=0ahUKEwiVqLXBxffOAhVgFMAKHfpCAosQ6AEIUjAG#v=onepage&q=table%20hardcoding%20vs.%20softcoding&f=false

Image Source: www.freepik.com

Published in Software Development

 

             In a globally competitive world, no doubt that personal and career development is a must. No wonder why the so called “millennials” are constantly seeking for a barrel of avenues wherein they can grow and unleash their potentials. In a report conducted by Gallup entitled as “How Millennials Work and Live” it has been noted that 87% of millennials rate career development  as an important factor in choosing a job.

Well, this is not surprising considering that technological advancement became an inherent aspect of modernization. The millennials want jobs that are innovative, success-driven and dynamic for growth. Here are some of the reasons, why most millennials may probably want or think of joining the Information Technology (IT) sector.

1. IT Jobs are dynamic and innovative

              Sounds cool right? Most of the generation today are millennials who are digital natives, which means they are accustomed to the use of technology. Most of the millenials today are forced to learn new things and it makes them flexible.  Web developers, programmers, android developers need to keep up with the latest trends in applications, programming language in oder to do certain tasks. Truly, millennials have to adapt with the current technologies. products and solutions that are available within a specific time. As a result, technology paved way for a lot of innovations coming from the new gadgets and applications that are being changed and invented everyday. Thus, it makes IT jobs more fascinating for the millennials.  IT jobs require fresh ideas, skills and innovative people like the millennials. 

2. IT Jobs are challenging

              Coding, developing, programming, reducing bugs and the like are not really easy. You have to be equipped with the knowledge and the skills in order to do such IT tasks. For millennial programmers, MySQL, JQuery, CSS, HTML can be as challenging as it is. They have to painstakingly work overnight just to code and learn other programming languages based on the system requirements of a company. The IT sector is very broad and this serves as challenge and opportunity for millennials to prove themselves. Well, millennials of today love to explore and learn new things. They wanted to challenge their abilities and think out of the box. But take note, millennials are also outgoing who love adventures so given such challenges, this can also lead them to explore other avenues wherein they can grow. This is also the reason why most of them especially the younger ones are into job hunting to the point that they change their jobs frequently. 

3. IT Jobs are interesting and fun

                More often than not, if you are an IT guy, there must be something in the technical world that interest you so much. If you are a programmer, you will not bear the agony of the coding process if you didn’t love and enjoy it in the first place.If you are a web developer, you will not study or take time to learn those certain platforms and applications if you didn’t like it even an ounce of it. Either it is by force or by choice, it still depends on how you view your job. Generally speaking, millennials want jobs that are innovative and fun. IT jobs are pretty fun and serious by nature. You have to take it seriously so that you can achieve fruitful results. This is the reason why most of the technical people think that IT jobs are interesting and fun. At the end of the day, if you love what you are doing you will not think of it as work.  

4. IT jobs are in demand

                  IT jobs are really promising for the millennials. It has been reported that by the year 2025, a larger part of the working sector will be composed of the millennials. It is also expected that a lot of industries and businesses will be improving their systems to adapt with the modern demands of the future. Thus, all the more they will need technological solutions and resources to address their needs. This will open up to a myriad of opportunities for IT people. Some businesses may result to IT staff augmentation or IT project outsourcing to achieve operational efficiency and lessen their cost. On the international level, there has been an increasing demand for IT people. All you have to do is search for that golden opportunity.

5. IT jobs are flexible and have a unique working culture

                   Millennials of today, love to work and play. This has been proven by a lot of IT companies who are making twist in their work culture. Local or international, some IT companies are making an effort to revolutionize the work place atmosphere. This is done to make their employees feel good so as they can work effectively. Even the offices are being designed in a unique manner so as it can be conducive not only for the customers but most importantly for the employees. They even offer free food, provide sleeping quarters, gaming room, gym in order to adjust with the lifestyle of the millennials.

      Isn’t it exciting? Well, these are just some of the captivating reasons why you might want to be part of the IT sector. No doubt, being an IT guy is as cool and as interesting as you may have probably think of! Salute to all the IT guys out there.

 

References:

Gallup Business Journal Online Website (2016, August 22). “How Miilennials Work and Live Report. Retrieved from“ http://www.gallup.com/businessjournal/191435/millennials-work-life.aspx

Image source: <a href="http://www.freepik.com/free-photos-vectors/business">Business vector designed by Freepik</a>

 

 

Published in Software Development

 

Guys who have just gotten out of college and looking to have a career in programming or simply those guys who would just want to make programming a hobby are basically in a whirlwind these days due to the presence or availability of several programming languages that they would want to decide to use. However, it is noted that most programming languages these days are becoming more general and all-purpose compared to the programming languages available decades ago. They still have their own specializations and each language has its own pros and cons.

 

Programming languages can be divided into a few basic types, though languages support general programming styles that can be applied in basically all languages.

  1. Procedural type. This is the most common programming language type. This type of language executes a sequence of statements that lead to a result. This type typically uses many variables and heavy loops.
  2. Functional type. This is a contrast of the procedural type which makes minimal or no use of stored state (or data stored in RAM) which is typically used in the procedural type. The primary focus of this type is on the return values of functions. Normally these languages are simpler in syntax which makes it easier to work on problems.
  3. Object-oriented (or OOP). OOP views everything as a collection of objects that have specific data on their own and creating external means of accessing parts of data. Think of it as several databases with several fields inside, in which OOP extracts some fields on several databases and uses it to create results.
  4. Scripting is normally used outside of any compiler-based languages but uses components of OOP.
  5. Logic programming allows programmers to make declarative statements and allow the computer to reason about the consequences of those statements.

 

To call these types is misleading. An example is that it is possible to program OOP-style in C++ or a functional type in a scripting language. In reality, all modern languages have this features and ideas from multiple languages that serve to increase the richness and usefulness of these languages.

 

So what language are you in? In order to decide, you have to decide what platform or application would you prefer doing? Are you more into mobile applications? Or into enterprise applications? Or stand-alone applications that you may want to interface to some other applications in the future?

 

Image Source: www.freepik.com

 

 

 

Published in Software Development
Monday, 15 August 2016 11:09

What Is SDLC?

 

 

Most of us who are in IT but are not involved in systems development oftentimes hear the term "SDLC" from our colleagues. But what is SDLC anyway? Is it another IT language that no one can ever comprehend?

SDLC is an abbreviation of Systems Development Life Cycle, which are phases involved in systems development. These are processes that are designed to meet or exceed customer satisfaction. By means of customer satisfaction, it simply means that the users, who are customers of the software developers are fully satisfied with the product or output of the software development. It simply means that the software is running as intended to simplify manual tasks, processes, create accurate and timely reports, process transactions properly and are completed within time and budget.

There are around six (6) phases in SDLC namely:

  • Systems planning
  • Systems analysis
  • Systems design
  • Implementation
  • Systems testing and integration
  • Systems Maintenance

The systems planning phase is the most critical part in creating a working applications system. This phase is where realizations in creating a new application is defined and how it addresses current and future needs, alternative solutions which can be cheaper or easier to maintain are studied, and where budget, timeframe and the manpower to create and maintain the proposed automated system are defined. If stones are left unturned in this phase, then its back to the drawing board.

The systems analysis phase is where user and business requirements, expectations for the proposed system and how will it perform and help the business are defined. Feasibility studies for the project are developed as well so that it should answer if the project is feasible economically, organizationally, operationally and technically. At this phase, it is very critical that project managers as well as business and systems analysts maintain close and strong communication levels with the users or clients as well as with the stakeholders so that everything on the vision of the project is detailedly met, otherwise, it will affect all future phases of the project which will make it to be delivered late and beyond budget.

The systems design phase comes after it is assumed that understanding the users, business or stakeholders needs are completely acquired, understood and met. This phase defines components and requirements of the system including database requirements, runtime requirements, security and access requirements, infrastructural and network requirements as well as coding requirements are defined. A general prototype can be done to determine how the system will look like and how it will function, and then a detailed and expanded system design is produced, and it will meet all functional and technical requirements, logically and physically.

The implementation and deployment phase comes after a complete understanding of system requirements and specifications, it’s the actual construction process after having a complete and illustrated design for the requested system. Actual codes are written and if the system contains new infrastructural components, this phase also include configuration and fine-tuning of the hardware, the networks and the necessary components to meet certain requirements and functions. After the coding and the necessary infrastructural configuration, the system can now be deployed and tested by in-house IT testers prior to involving testing by the users. Training may also be required in this phase for the users to be sure they know how to use the system and get familiar with it.

The systems test and integration phase brings different components and subsystems together to create the whole integrated system, and then introducing the new system to different inputs to obtain and analyze its outputs and behavior and the way it functions. Testing is becoming more and more important to ensure customer’s satisfaction, and it requires no knowledge in coding, hardware configuration or design. Testing can be performed by real users, or by a team of specialized personnel, it can also be systematic and automated to ensure that the actual outcomes are compared and equal to the predicted and desired outcomes. Prior to this phase, test conditions on how to test the new system as its own or integrated with other systems are prepared to realize the necessary and required outputs.

In the systems maintenance phase, periodic and regular maintenance for the system will be carried out to make sure that the system won’t become obsolete, by adding new functionalities or may include replacing the old hardware and continuously evaluating system’s performance. It also includes providing latest updates for certain components to make sure it meets the right standards and the latest technologies to face current security threats as well as new components to meet changing business or user needs.

The Systems Development Life Cycle is a highly iterative process and is very specific for every software development project. Again, it is very important that excellent communication between both the developers and the users or customers be maintained and prototypes are very important and helpful in meeting expectations. In building a system, it is important that these phases are properly aligned so that customer or user satisfaction is guaranteed.

There are many models of the SDLC that came up from the idea of saving effort, money and time, no to mention in minimizing the risks in not meeting customer satisfaction at the end of the project. Some of these models are the Agile Model, The Iterative Model and the V-Model, which somehow quickens or speeds up the phase of the development, but are patterened basically on the original SDLC phases as discussed here.

 

Published in Software Development

 

 

Do you have what it takes to be a developer? Welcome to the world of programming language where innumerable codes exist. Truly, being a developer is a rewarding job but I can also tell you frankly and straight in the eye that, it is not a “petiks” job.

"Petiks"

In the Filipino culture, the word “petiks” is a word used to denote an act of resting or just merely doing nothing with no pressure at all. Nowadays, people are fascinated with the idea that developers and programmers have a relaxing and high paying job. In one way or another, it can be true, but you really have to work hard for it.

If you aspire to climb that ladder of success, you can’t manage to turn that “petiks” mode on. You have to be focused, patient and determined into making that system right. You are also compelled to meet the deadline even if you have to sacrifice your own personal time and work over time. Moreover, developers are not complacent because they need to cope up with the ongoing trend just like upgrading your phone to a new operating system. Application developers need to learn the latest updates and changes as well in order to adjust with various technologies.

Learning how to program is like teaching a person how to speak a language. Imagine a child learning the alphabets and numbers. For a developer that is equivalent to teaching a person on how to do simple tags and using it to create a simple website/application/systems. Then, just like how a child use the alphabets into words and sentences, developers can now use the learned tags and syntax to start the developing process.

It seems to be simple, right? For a normal person, learning one’s language might be enough but for developers, it doesn’t even come close to be called as “pa-petiks”.  For a developer to survive and be slightly noticeable by a good company, you must be a “jack of all trades”.It means that you must have to learn as many skills and language as you can just like JAVA, PYTHON, RUBY, PHP, VB.NET, C,C++,C#, Object C and etc. Moreover, learning these things are not enough. You still have to put a lot of effort and dedication in this kind of work.

At the end of the day, developers must also have a good grasp on what, why, who, and how they will create a system. After all, no matter how hard their work is, it was all worth it! The feeling of getting a task done is truly rewarding and incomparable. Just like how smitten and giddy you are when you had that first Iphone 6s plus  with (128GB) storage on your birthday!

Developers don’t have a magic mouse that can make coding as easy as ABC. In this globally competitive world,they must be fully equipped with technical knowledge, skills and undying passion for their craft. Kudos to all the hardworking developers out there! Keep your mechanical keyboards down!

Being a developer, is never that easy and it will never be as “petiks” as you think.

Images lifted from www.freepik.com

 

Published in Software Development

Message Us Now

Loading, please wait..