For the first time, I was invited to do some tech talk and it was in Adamson University. The event was part of the course on IT Issues taken by Computer Science students. It was quite on short notice and we came there rather unprepared and clueless of things. I was able to write down what I got to say though but I had to change the medium to effectively connect to the audience. Below is the speech I prepared in it’s entirety. (I made deviations along the way.)
When a colleague mentioned to me this tech talk thing I was instantly stoked because of two things. Firstly, although I am seldom active in events like these, I’ve always loved the idea of people of the IT industry coming together in one event solely out of a common interest… I suppose. Yes, I’ve expected people to be light on biz talk today and really just have a great time with their crowd. Secondly, I find it enjoyable sharing experiences. It’s not that everybody will get to learn something new from you but just being able to identify oneself with the one doing the talk feels great right? But I didn’t know what to share. With barely three years of working experience, I’m a newbie compared to other speakers who usually get the invites to conferences. Tackling technical matters like platforms, APIs, and tools could be a safe choice for someone like me. I won’t have to go into an in-depth discussion considering the time we got anyway but let us leave those things to the experts, to training providers, to our professors; you can even learn them on your own with no real risks. So what did I choose? I figured since I’m still practically a beginner I should just give you a glimpse of what it’s like to be a beginner out there.
Who among us here have always wanted to take IT or computer science like they’ve always dreamt of hacking systems and working on large systems doing very complex calculations?
Who among us here have been dragged, maybe literally, by somebody to take the course they are now taking?
Who among us here chose this path for practical reasons?
I did. We are Filipinos, we adapt to survive. With bad economy and high rate of underemployment it’s no longer uncommon for people nowadays to let go of certain things to survive in the real world.
To tell you the truth I’m not really here to talk to people who are a hundred percent sure of themselves in taking this path. I’m here to talk to people who are rather unsure of how they are going to fare out there in the real world.
Who among you here are having a hard time with their math subjects? Calculus, differential equations, discrete mathematics? Who among you here feel like they’re just average programmers, like sure they can produce working applications but they don’t think it is done hard-core way like how some star student does it? I’ll tell you the things I’ve learned beginning my career in the IT industry.
1. TO KEEP YOURSELF SANE, START WITH YOUR OWN STANDARDS
You know how you should respond to that situation I previously stated? You say “who cares?” It’s perfectly normal not to get things perfect the first time. Don’t feel too bad about it. It’s like feeling ugly because you are surrounded by supermodels and you are not even one of them. Don’t start with someone else’s standards ’cause you’ll get there in time. It’s really going to be just you against yourself out there. There are no real competitions against anybody. It’s not very healthy chasing someone or some organization’s standards. What I suggest is to give yourself a good challenge and before you know it you will already qualify in the positions you never thought you could fill.
For more than a year I was the acting project lead on one of the projects in our company. Due to certain circumstances, I was assigned the position. I was pretty hesitant to take it for I knew I didn’t have the technical background to assume such a role. But come to think of it, it’s not all technical stuff in there. If you know how to actually work with your team, you know you won’t be the one to do all the heavy lifting. You are all technically equally capable of producing a good solution. You are simply there to stir the wheel when everybody knows their destination. So I took it as a good challenge and it taught me a lot of things. I may not be the best; It is not for me to say. But I know that I’ve gained something and now I can take on harder challenges in leadership.
2. FOCUS ON YOUR IMPROVEMENT, NOT JUST THE END RESULTS
Being new to the industry, you will most likely be into training and stuff and need to learn new technologies. And do you know the key to an enjoyable learning experience? That is starting by accepting your weaknesses and building your plan from there. Don’t go like “I must learn mobile applications development because it’s gonna get me paid forty thousand pesos a month at the least!” What if you didn’t get the position because somebody else with more experience took it? Will you be dispirited and say “hell, now I have to learn another platform. I heard money is good there and it’s possibly within my league.”
They always say that the journey is more valuable than the destination and that’s true. Won’t it be nice to hear from yourself “yeah, I didn’t get the job but I realized I really love developing UIs providing awesome user experience so I guess I’ll just work more on it”? Don’t just focus on the digits for you’ll surely be surprised how much of your salary you will be willing to trade for work satisfaction. Focus on the non-monetary things you’ll gain. After all, at the end of the day, you’d definitely want to be more valuable than the numbers written on your paycheck.
Quite in relation to that…
3. YOU CANNOT BE THE MASTER OF ALL TRADES YET. APPRECIATE THE VALUE OF MASTERING A SINGLE THING FIRST [and just familiarize yourself with the others for the meantime]
Having great knowledge on a handful of technologies can be very very valuable. And do you know when it is most valuable? It is when you are a one-man team. But the thing is, it will most certainly be not like that in the real world. With time constraints, one person can only do so much despite of what s/he knows. Sure you know some database administration, some web applications development, and some mobile applications development. But having you against three people focused on each of the mentioned field, what can be your value? Given a very short time, it is very much possible for three focused average programmers to beat one expert in delivering a solution unless the expert is willing to trade his physical, mental, and emotional health. And even then such a feat won’t be impressive.
In our team, I’m currently the go-to person for developing supporting web services for mobile applications. Yes I study other frameworks and languages on my free time like python, nodejs, backbonejs, html5, but I’m most valuable in developing web services in PHP and .Net the same way my teammates are most valuable in developing android and iOS applications despite of the other things they know. And needless to say, that expertise will dictate a great part if not a hundred percent of your salary. What I suggest is for you to look into the trends and select one technology of a great value that you will actually enjoy, again emphasizing on enjoyment, then focus on it for now.
4. PUTTING YOUR HARD EARNED KNOWLEDGE TO USE IS UP TO YOU
A lot of us would frown on a complex statistical formula and ask “am I really going to use this after I graduated?” I say you may and you may not. To be honest, application of the things we’ve learned in school is not at all times present unless you chose the right job. Unlike game development that immerses a programmer into some hard-core computing, developing simple information systems won’t ask too much of your expertise in differential equations. BUT there are opportunities for it if you stay watchful especially when we are talking about optimizations and data mining and analytics which may sound rather too grand for you right now but actually serve as foundations for valuable systems.
To share things with you, about a month or two ago we’ve spent a good four hours or so discussing an algorithm that could enhance the response time of the application we were working on. There was even a time that I’ve resorted into using binary trees to lessen the time complexity of a function I was working on ’cause the application was time critical and we were only given five seconds to respond in a transaction that involves scanning the database and going through a handful of records in a legacy system. Yes, powerful machines nowadays can already solve some problems on speed but then it is not always like that.
So what I’m trying to say is you are the ones who are going to put value on what you’ve learned. But I must say that there’s a limit for it because…
5. DOCTRINAIRE SOLUTIONS SELDOM APPLY
Doctrinaire, stiffly adherent to academic standards, very imposing of academic standards as to disregard practical considerations. Apply, be applicable or relevant. So these solutions actually work. These solutions hit all the requirements. It’s just that they’ve disregarded quite a lot of practical considerations that they no longer perfectly apply to the situation.
While going through the technical report for CMMI 1.3 I’ve encountered a very attention capturing term called “operational concept” which describes how an entity or a system actually operates in production. Surprisingly, it’s one thing quite a lot of solution providers tend to overlook ’cause they either overanalyze or are over their heads. Hence they come up with solutions too sophisticated for their customers needs that the customers could not appreciate it.
I’m not even speaking for myself right now, I’m simply relaying what’s in the CMMI technical report. We encounter certain limitations when providing solutions; there’s cost, time, effort, and technology at the very least. Out there, we are not going to develop solutions in an environment very favorable for us so we should always come up with alternatives and be aware of tradeoffs. Even consultants who have earned the authority to tell which technology will be most beneficial also have to consider the operational concept to suggest a solution.
Now what I want to say is, while you ought to learn as much as you can in the IT industry don’t be so envious of somebody who knows the latest frameworks and standards ’cause you are not always going to work on applications running on these latest frameworks capable of supporting the newest standards. It’s not really always about technical knowledge if your goal is to address your customer’s needs and cost is of great consideration. You cannot always impose what you know when circumstances make it impractical and/or costly. You should also develop one thing which is your analytical skill.
6. YOUR ANALYTICAL SKILL IS EQUALLY VALUABLE WITH YOUR TECHNICAL SKILL AND KNOWLEDGE
I appreciate the value of exams that ask you to perform rather hard-core computations and create an application written in a particular language in detail but I’m not very fond of them. Why? Because they are unrealistic? On the floor, you’re not going to develop computationally intensive applications having to recall each formula straight from memory. There’s google and lots of documentations, white papers, and APIs. You got the time to prepare and it’s even included in your gantt chart. To put it simply, it’s allowed to use cheat sheets and prepare references. You only got to be ethical and ensure that you’ll learn something from your references. Producing reusable codes is a programmer’s responsibility. The ability to understand other people’s code is a valuable skill. So why do we answer exams that do not test those skills? Isn’t our diploma enough proof that we know the use of statistical formulas?
As you go along studying various platforms and frameworks, also pay close attention to the development of your analytical skills. Truth is, if you cannot analyze a situation enough to come up with a solution in which you can utilize your technical knowledge then you will most probably just implementing somebody’s design and we do not want that. We want to be software architects and consultants. So folks while I encourage you to study well, do not cry over your grades ’cause you weren’t able to commit everything to memory and therefore you failed once or twice. How you put everything into practice will matter more.
And that’s it. Now these things I’ve presented seem cliche for some. Some would say, “I’ve always known that!” and I agree that we’ve always known these things. But the surprising thing is that it takes months even years for some people to have these things sink in. Now my only hope is that you will get to ponder on these things later on and be prepared on the challenge ahead. To close things I just wanna thank everybody for this opportunity of being able to share what I know to all of you. And as early as now, let me bid you welcome to the IT industry. I hope I was able to save you some months of on-the-job experience by presenting these things today. A pleasant evening everyone.