A guide to launching your software career - Part 5 (Conclusion)
 


software career.jpg

In the previous part, we examined skills from a design, development and deployment perspective.

In the conclusion of this mini-series, let’s take a look at something very critical that makes a well-rounded professional. Often neglected or de-prioritised, soft skills are as important as other skills. I can count numerous instances in my career where an outstanding technical resource’s career flat-lined due to poor communication or inter-personal skills and the inability to work in a team. Granted, some of these are personality traits that cannot be taught, but there are things that professionals, especially young engineers joining the workforce out of college, need to be aware of. In my experience, these skills can be primarily listed as:

a. Professional communication -

We often work in a global environment where we collaborate with peers, bosses, other functions such as HR, Finance etc from across the world.  The ability to communicate with these different stakeholders of one’s career, both verbally and in written form, is critical.  Everyone might know what to say, but how they say it might sometimes make or break opportunities.

b. Persuasive presentation skills -

An idea or thought that is not articulated well, dies an instant death.  When presenting an idea, a root-cause to a problem or status of a pending task, it is of paramount importance to know your audience, what level of detail to get into and how to structure your thoughts. Frequently, even experienced professionals falter here. When presenting to a large room on a topic  where you are seen as the expert disseminating valuable information - it is essential to get into details. On the other hand, while presenting an idea or status to a senior executive, brevity and getting to the bottom line quickly is your best friend. Some presentations might need a focus on numbers (eg: financial planning) while others might need a good story (eg: trying to pitch a new product idea). There is far too much focus on the slides and way too less focus on the message and the take-away - there should be a good balance between the two.

c. Negotiation skills -

Organisations are nothing if not give-n-take carnivals. Any individual at any level in the pecking order will always to negotiate with others on something he/she has to offer and wants in return. 

A good combination of knowing what you want or are good at, the technical competence in relevant domains and collaboration skills to work in a complex matrixed world are the pillars of a successful career.  The first few years are always great learning regardless of which company you are in, how much you get paid and whether your title is less cooler than you friend’s. After getting that solid foundation, it becomes more important to fixate on what you enjoy doing. The benchmark eventually should be - are you happy getting up in the morning and showing up at work?

Good luck in building your dream careers. 

About the Author :

Nagen Nyamgondalu is the Co-founder & Principal Advisor at Skill Velocity. After over two decades of technology leadership roles in software majors like IBM, and leading a spin-off as Director of Engineering at Honeywell, Nagen bootstrapped the concept of SkillVelocity. A true blue technologist at heart, he has a Masters degree in Software Engineering from Brandeis University, USA. 




 
Nagendra Nyamgondalu
A guide to launching your software career - Part 4
 
Software Career - Blog .png

In the previous part, we began to look at a Skill-based POV and examined the meaning of “full-stack”.

Continuing to look at a Skill POV,  there are a few different aspects to consider - design approach, development model and deployment model. There are unique skill sets needed for different variants of these. In design, a greatly neglected aspect is the ability to use a human-centered design approach to ideate and arrive at the best possible solution - this is accomplished using Design Thinking.

Beyond that, the technical design of the system or solution would need to consider the base architecture - can it be built using a loosely coupled services approach like a micro services architecture?  

The development model presents many more interesting possibilities. Do we rely on  locally installed middleware  (such as runtime, messaging & queueing or database) or use a PaaS model and consume these as services on the cloud? Following a scrum agile development approach might make the most sense. How do we ensure our code is secure? Do we use a test-driven-development approach? How much of our testing can we automate? Does pair-programming make sense? So many questions…that can be answered only by experience in each of these approaches and being aware of the advantages they  bring and any downsides to adopting them. 

The deployment model presents its own set of challenges and opportunities. How often should we roll out updated versions of our software to our customers? The appetite to update might be different for different industries. For instance, an aircraft operation module might not be updated more than once a year, where as a mobile app used for banking can be updated every month. Having a sound DevOps strategy is key to ensuring iterative roll-outs of feature and function. For that, a robust automation implementation is the foundation. 

Each one of these aspects bring in a different dimension of skills needed - for instance a python programmer would need to know how to automate test cases for continuous integration and deployment. A release engineer might need to be skilled in containerisation and automating the whole process.  The possibilities are many but it also makes it an exciting new world for the software engineer.

Next part (conclusion) : Neglect soft skills at your own risk

About the Author :

Nagen Nyamgondalu is the Co-founder & Principal Advisor at Skill Velocity. After over two decades of technology leadership roles in software majors like IBM, and leading a spin-off as Director of Engineering at Honeywell, Nagen bootstrapped the concept of SkillVelocity. A true blue technologist at heart, he has a Masters degree in Software Engineering from Brandeis University, USA. 

Nagendra Nyamgondalu
Guide to launching your software career - Part 3
 
softwarecareer3

In the previous part, we looked at different options from the POV of role .

Here we will look at the options from a skill POV.

A common term that you will hear in conversations about software skills is “Full Stack”. So, what does this really mean? 

Generally speaking, every software system will have a user interface (this could be via a web browser, a mobile app or a desktop app), server-side logic which determines the functioning of the system and  a database component for storage and retrieval of data. Essentially, a full stack developer is one who is able to work in all three of these areas. The typical skills needed for UI development are: (i) a keen sense of design (the UI is after all, the only gateway to your user or customer-  so it better be super easy to use and intuitive), (ii) tools and programming languages like (not limited to) HTML, CSS, Angular, Javascript, (iii) building & deploying mobile apps on Android (Java) or iOS (swift) platforms. This will also involve working closely with graphic artists/designers who build the visual appeal of your UI. 

Server-side logic usually requires proficiency in (i) architecting highly available, high-performing and secure solutions, (ii) a robust programming language like (not limited to) Python, Java, Ruby, C++. With databases you have your regular relational databases such as MySQL and NoSQL databases such as MongoDB or DocumentDB - being able to tell which type of db is needed for your solution and how to connect to it and use it is the key, 

But, looking at software development only as a 3-tiered stack is myopic. There are many other considerations such as understanding how to write a solution for the cloud, how to consume cloud-based services for your runtime, database etc.  Embedded programming is a key skill if you are involved in end-to-end IoT development. Further, analytics, reporting/dashboarding have their own unique value and require a very different type of skill - i.e. to aggregate and visualise data in ways that provide businesses insights that are otherwise not apparent.

Next part: Continuation of the Skill POV.

About the Author :

Nagen Nyamgondalu is the Co-founder & Principal Advisor at Skill Velocity. After over two decades of technology leadership roles in software majors like IBM, and leading a spin-off as Director of Engineering at Honeywell, Nagen bootstrapped the concept of SkillVelocity. A true blue technologist at heart, he has a Masters degree in Software Engineering from Brandeis University, USA. 

 
Suparna Rao
A guide to launching your software career - What are my options?
 
Copy of A guide to launching your software career - part 2.png

In the first part, ( read it here) I promised to write about things that you must know as you set out to launching your career.

Let’s start by understanding what your options are.

The options can be looked at from multiple POVs (points of view) - role, skill, type of company and so on.

Let’s start with the most fundamental - role.

Though the lines are beginning to blur - many companies continue to list separate roles for Software Developer (or Programmer) and Software Tester (or Quality Engineer).

As someone taking the first step into a long and accomplished career in software - you can’t go wrong with either of these. 

While as a software developer, you will gain depth in certain aspects - such as how to write code for creating a shopping cart on a website, as a tester you will gain a broad understanding of the domain.  So, you would learn how a certain process works end-to-end - for instance, the entire journey of a customer from registration to authenticating their Aadhar number on a bank's portal.  As a tester, you  may also do some cool coding of your own to automate test cases. 

Regardless of the role, the operative word here would be learning - it is a priceless reward of taking on your first job. Any company, any role - there will always be a huge amount of learning for the first  few weeks/months. Don’t let it overwhelm you - enjoy the experience of learning in a non-classroom environment. 

Just for completeness - the other possible roles that you could be offered are (by no means a complete list) Trainee Systems Administrator (setup and manage computer servers/storage/networks), Trainee Systems Analyst (work with customers/end users to gather requirements for the software needed to be built), Trainee Ux Designer (for the right-brained creators of beautiful designs), Trainee Technical writer (for word-wizards who can document the working of the software succinctly) - all vital roles in technology firms. 

Next part: Options from a skill POV

About the Author :

Nagen Nyamgondalu is the Co-founder & Principal Advisor at Skill Velocity. After over two decades of technology leadership roles in software majors like IBM, and leading a spin-off as Director of Engineering at Honeywell, Nagen bootstrapped the concept of SkillVelocity. A true blue technologist at heart, he has a Masters degree in Software Engineering from Brandeis University, USA. 

 
Suparna Rao
A guide to launching your software career
 
launching your software career.png
 

Congratulations to those of you who will soon be proud graduates with a shiny new degree!  Pause to reflect on your journey from a boisterous high-school kid to working your tail off to get into the college of your choice and then the roller coaster ride called  college life. The good news - you made it through the hard part.  That’s not to say everything is easy from here on - but you now have a world of choices in front of you and the world is your oyster after all.

If you are still reading this, it is likely that you have zeroed in on a  career in software development and are waiting for me to get to the point as advertised in the title.  Some of you probably got a plum offer as part of campus placements while others did not get what you were looking for. And that’s ok.

There was no such thing as campus placements when I started on my journey as a young starry-eyed graduate with a love for programming. But, the journey has been no less rewarding.

In this series, I will lay out what I believe (as someone who has been a technologist for more than 2 decades) are things that you must know as you set out on this journey - think of it as a cheat sheet with tips and tricks. 

In the next part- “what are my options ?”

About the Author :

Nagen Nyamgondalu is the Co-founder & Principal Advisor at Skill Velocity. After over two decades of technology leadership roles in software majors like IBM, and leading a spin-off as Director of Engineering at Honeywell, Nagen bootstrapped the concept of SkillVelocity. A true blue technologist at heart, he has a Masters degree in Software Engineering from Brandeis University, USA. 

Suparna Rao
Agile,  Design Thinking , DevOps - A Symbiotic Trio
 
Agile, Design Thinking, DevOps.png
 
 

Adoption and consumption of new technologies is becoming faster and more frequent - so, clearly it is becoming easier as well.

Tech companies that develop software applications and IT departments of businesses that consume them have a very agreeable conduit between them in the form of cloud-based software.

Consumers (B2C) have a much better appetite for updates and newer versions than they did  just a few years back.

The underpinnings that enable all this are primarily Agile methodology, human-centred design and a robust DevOps culture.

Agile creates an environment where there is a valuable pipe between the customer or end-user, feeding requirements and feedback to the product owner and the development teams or scrum teams. Using this pipeline as a backlog, the scrum team develops features in small increments which are regularly looped back to the customer thereby ensuring that there are no unpleasant surprises at any point. Course correction is relatively easier and cheaper. Rich features and functions that are far more likely to be  valuable to the end-user are delivered when agile is adopted in its true spirit.

Human-centered design is the other side of that very same coin - it can ensure that the product or service being developed addresses the right problem, the right set of stakeholders and it is the most feasible and acceptable solution. Put simply, the goal is customer delight.

Development and delivery in small increments requires a mindset of accountability by every team member to deliver working high-quality code and a process that enables swift integration and delivery of every team member’s contribution. This calls for a win-win collaboration between development and operations teams to create a reliable framework that allows on-demand environment build-up and tear-down, automated tests that ensure nothing gets past even without human intervention and the ability to promote /deploy new code based on quality and security criteria.

Every product and service company is thinking about to how to take advantage of this formidable trio to get an edge against competition and win customer loyalty. If they aren’t thinking about it….well, they should be.

DevOps in a Nutshell

In today’s world, one uniform theme across all businesses is speed. Faster time to market and shorter project timelines has necessitated the rise of IT systems that are agile, quick and super responsive. Such a business milieu has led to the rise of one of today’s hottest buzzwords – DevOps.

What is DevOps?

DevOps is primarily a type of agile relationship between the development team and IToperations. By ensuring improved communication, collaboration and teamwork between these two business units, businesses hope to develop and release products faster.

The operations team and development engineers work closely together throughout the development lifecycle, right from the design phase of the project through development right up to support.

 What are the benefits?

This close knit coordination between development and operations leads to significant benefits on both the technical and business sides. These include reduced project complexity, continuous software delivery, increased innovation and speed. By increasing the frequency of deployments, businesses can keep a tighter check on quality and also hedge risks better. All this helps businesses meet end-user and client expectations better.

What are some of the popular DevOps tools?

Remember, DevOps is a culture and not a tool by itself. Some of the popular ones are GIT, Jenkins, Selenium, Docker, Puppet, Chef, Nagios, Splunk and more. There are some free, open source tools among these. All these tools help with distributed development and enable faster release cycles.

 DevOps, in essence, takes into account effective philosophies, practices, tools and business cultures to deliver applications and services, faster and better. It’s cornerstone is communication, collaboration and teamwork among the product management, operations and development teams.

Cloud Computing - Top Trends for 2019

Cloud Computing has been around for more than two decades and has been transforming companies. With the exponential rise in data in today's digital age,  organizations are grappling with enormous amounts of data and it’s secure storage.

Cloud computing has been super valuable for businesses by allowing them to access large amounts of data over a secure, online network connection.

With the rise of AI and ML, major cloud providers have rolled out some form of an AI platform. While developing AI in-house could be an expensive proposition for companies, especially in the SMB sector,  a cloud-based AI product makes much more business sense.

Here is an infographic with some exciting cloud computing trends for 2019. 

Cloud Computing Trends.png


Is mobile app development a good career option in 2019 ?
 
MobileAppDevelopment.png
 

In a short 3 years, the global app development market is expected to hit $100 billion.

This statistic is not surprising when you consider that the market has been growing steadily from 2016 and is expected to grow at a CAGR of ˜14% till 2022.

Even less surprising when you take the average number of apps a person uses daily. From the time one gets up – exercise, fitness, grocery, cabs, entertainment, productivity, learning, games- a staggering number of apps run our daily apps. And this is just the consumer side of it.

Enterprise mobile apps are a whole different, burgeoning market by itself. With the number of corporations scrambling to adopt mobile apps to cater to their customers and employees’ needs, this is a growing market indeed.

And the mobile app development market in Asia Pacific region is expected to grow with the highest CAGR subsequent to a strong growth of smartphones in countries like India and China. Refer to this report from Market Research Future.

All this leads us to the actual development of mobile apps. This has been and continues to be an attractive career option for an increasing number of students. Mobile app development, be it iOS or Android, is one of the hottest skills that companies in India are hiring for. And employers are willing to pay extremely competitive salaries for these in-demand skills.

Subsequently, courses in mobile app development, mobile app design, UX and app testing have been growing all over the country. Be it freshers looking to start a career in app development or software developers looking to switch to app development, the opportunities are plenty.

At Skill Velocity, we focus on short, high intensity bootcamps on the latest technologies including app development to get you started on the career of your dreams. Visit us at www.skillvelocity.in to learn more.

 
Did you know? (Blockchain – part 3 of 3)
BlockChain.jpeg
 

In this conclusion of the 3-part mini-series on Blockchain, I endeavor to leave you with two important aspects – Accounts and Smart Contracts.

 Accounts (also referred to as External Owned Accounts) are similar to any accounts we know in our daily lives – it is a placeholder to track an entity’s balance and can be transacted upon. The implementation of these accounts can vary from one blockchain platform to the other, but the concept is essentially the same. Accounts are usually protected by a passcode and the owner of the account can accumulate currency (in the case of Ethereum, ether) – either through transfers from other stakeholders or as a fee for mining one or more transactions (as explained in part 2).

Note: In the public Ethereum Blockchain, 1 ether is trading at $213.

 

A very important and meaningful aspect of Blockchain is the provision to deploy and transact through Smart Contracts. A smart contract is essentially a program written to enforce the core business logic of transactions that can occur between two or more stakeholders. For instance, if we write a smart contract for transactions between a motor vehicle registry, car dealership and its customers, then we would represent in code, the various parameters that would represent the state of the contract such as “Vehicle ID Number”, “Registration Status”, “Manufacturer”, “Model”, “Year of Manufacture”, “DateofSale”, “OwnerName”, “OwnerAddress”… and so on. Next, we would provide functions or methods to manipulate these parameters via the possible events or flow of transactions – for instance: something like SaleComplete() would allow the dealer to provide DateofSale, OwnerName & OwnerAddress. Similarly, RegisterVehicle() would allow the motor vehicle registry to allocate a license plate number to the vehicle. This smart contract will then need to be deployed to the Blockchain (basically, a new instance is created). Once deployed or instantiated, it is copied across the different nodes and the stakeholders can transact by calling the relevant functions/methods. Each transaction of course, needs to be mined or processed by a mining node. The most popular language for writing Smart Contracts today is Solidity, although there are other choices such as JavaScript, Python and others.

 Hope this brief peek into Blockchain was a useful primer – for those of you keen to learn more, I plan to run a 2-day workshop shortly at the UBQT Design School.

Suparna Rao
Did you know? (Blockchain part 2)
BlockChain.jpeg
 

Let’s get our feet a little more wet this time. So, how and why does a miner mine the blockchain? First, a mining node should have the horsepower to quickly generate a “hash” that meets the “difficulty” level set by the blockchain platform. This means, our everyday use computers may not cut it - at least in a public blockchain. If you do have a powerful computer, you will be competing with many others, potentially hundreds of others, to win the right to add a new transaction to the block. 

To do this, you will have to come up with a hash that represents or validates the transactions in the block (this hash gets added to the blockchain to represent that transaction). In addition, this hash has to meet the difficulty target. Essentially, this difficulty target keeps changing dynamically based on the number of active miners – the more number of mining nodes, the greater the difficulty. If this difficulty stays static, the blockchain will get to a point where mining will be faster than the actual transactions coming in and will become a disincentive for mining nodes to participate. To prevent that, blockchain platforms such as Ethereum have a dynamic difficulty target.

 

So, the first node that succeeds in creating a hash that meets the difficulty target, processes the transaction and adds the block to the chain so all the nodes have a copy of the same. Ok – but what is in it for the miner? Every blockchain platform has a predefined unit for types of operations – this is called “gas”(as in gasoline – i.e. fuel). For instance, the base fee for an Ethereum transaction is 500 units of gas. Every transaction comes with a gas limit and a gas price. Translation: the transaction owner needs to declare “for this transaction, I am willing to spend a max abc number of gas units and the price per gas unit is xyz”. The successful miner gets this amount (gas * gas price) in ether currency. If the transaction owner sets the gas limit too low, the transaction never gets processed. 

Confused? That’s ok – it took me a while to digest this as well. It helps to simply think of it as - all the mining nodes compete to create a valid representation of every new transaction that comes in and the first miner to do so, gets to process the transaction, propagate it on the network and get paid for it. The power of distributed computing.

Suparna Rao
Did you know? (Blockchain Part 1)
 
BlockChain.jpeg
 

Blockchain is a very popular topic, but for many it continues to be a bit of an enigma with an elusive single source of truth. So, in doing my part to shed some light on this topic, here is a 3-part mini-series that provides some basic but hopefully valuable information.

Did you know? (Blockchain part 1)

Blockchain is essentially a distributed digital ledger that records transactions without a central authority needed to supervise. Any transaction that needs processing is propagated through the blockchain network and the node that meets certain criteria (this is a topic for another time) gets to process it for a fee. Once processed, it is added to the copy of the blockchain on every node on the network.

But, did you know the difference between a public blockchain and a private one?

The digital currency, BitCoin is a good example of a public blockchain. What this means is that anyone can choose to be a node in this public world-wide network and submit transactions to be processed. For example, if I run a bookstore and accept bitcoin as a form of payment, then I need to participate in the public network to submit every transaction. Additionally, some nodes can also be “miners” – i.e. have the capability to process transactions, not just submit them. Ethereum is another good example of a public blockchain.

A private blockchain network is absolutely the same thing, except that it is more private in scope and participants are limited by defined criteria. For example: a factory and all its suppliers / vendors can form a private blockchain network for their business transactions only.

Ethereum is unique in that it has a public blockchain similar to bitcoin, but it provides the ability to build a private network as well.


Suparna RaoComment