Learning by Need:

Posted by admin at January 6, 2021

I have been learning and I never stopped. The following charts my history of software development:

I started out developing applications in C and C# that ran on designated operating systems. Then I moved right over Java which allowed for cross platform applications and onto web development which provided for information disemmination to multiple devices across the internet. I worked with ASP, PHP and Javascript for web development and when Javascript achieved more functionalities, I built complete projects in that as well. No longer were my applications restricted to a single computer running a specific operating system, I could serve customers in different countries so long as they were connected to the internet.

Certain requirements demanded specialized calculations and scalability, so I employed Python, but kept the final products accessible online. And then, cellphones got smarter, took new names and moved a large customer base from the desk to their pockets as more and more people relied on smaller device for information and productivity. Java took preeminence in my developmental toolkit, as it was needed to develop Android apps. I also built projects with frameworks of JavaScript like PhoneGap and React Native (Expo). I experimented in Objective C but built iOS projects in Swift.

Then was the consideration for developing applications that catered for clients whether they used computers, cell phones, tablets, smart watches or kitchen toasters. Long before then, companies where offering services via protocols that only be consumed by other applications, no matter what device they were deployed on. Programmable Interfaces became a thing and soon enough I was building APIs with XMLs, working on SOAP projects on C#, tinkering with curl.

REST became popular and of course I moved on to building complete projects using the convention. My projects transitioned from web applications that connected directly to databases to fully functional APIs that broke down the application in constituent services, and connected to a variety of front ends: websites, apps and hardware. I now had to consider which stacks I preferred and what end of the stack I liked Front or Back. I like backend, if I am building a REST API with Laravel, Node, Flask or Django, I enjoy frontend if I am using VueJS.

Then came GraphQL, I looked into it, but havent built anything with it. Yet. I plan to do so soon though.

Now we have cutting edge technology: Analytics, Machine Learning and IoT requirements popping in certain client requirements and emloyers’ job specifications that require knowledge in systems that permanently online, built and owned by a coorporations and no longer solely on based on Kknowledge of a specific programming language, methodology or task. Building software has shifted to dependency on software as a service which started with the popularity of APIs and revolutionized development into the “as a Service” era. Again I pivoted, Git, Google Cloud, Firebase, Tensor, AWS, OAuth were added to my knowledge toolkit, at least to enough to allow me complete a project.

Throughout all this, I hardest part was developing skills not related to coding or the practice… I had to learn to deal with people and polices, learn to communicate ideas, design and deliver training and presentations, connect with customers, sell a product to a new client, manage a development team, negotiate renumerations, swim in social media etc. These skills I could only learn through experience. I worked with several teams, in over 20 countries, developing solutions that reached hundreds of end-users, developed and administered staff training numerous times.

The above case might be very similar to yours or largely different. The point to all this is, I find a software developer requires a tremendous amount of courage in order to navigate, master a new set of skills and stay relevant. The most important trait demanded of me at every point was the ability to shutdown the tumoultous noise generaed by several opportunities to learn new technologies, decern what is needed to a solve a particular problem and dive in. I reaslised that as you go through this process a number of times, the mind adapts to the process and forms a set of habits, habits that consolidate every time you perform a new unmastered activity, solve a new problem or learn a new skill.

My favorite part is picking a problem and sticking to solving it, no matter the technology, person or skill required.


Suggested Read