Showing posts with label thoughts. Show all posts
Showing posts with label thoughts. Show all posts

Sunday, July 8, 2012

My Story - The Beginnings

Early next month I will turn 10. 10 years of professional employment, in various roles, industries and working on various technologies. I am also turning 13 since I've discovered Java, 14 since I've started with C++ and 15 since I've first laid my eyes on a programming article out of conscious free will (see note 1). While my last 7 years were mostly dedicated to game development from which 4 to management, I remember my first days with great pleasure.

I woke up this morning remembering my past experience with computers. It is not something I highlight in my CV anymore because it happened already too long ago but, nevertheless, it is still a fundamental part of who I am and how I've shaped myself.

Spectrum days:

It all started when I was very young (I would say 8-10), when my parents brought home a Spectrum-compatible personal computer. Back then, programs were loaded onto audio tapes and programming was done in Basic. I got a book with games (source code) and I remember typing them in and trying to run them. I had no idea what debugging meant, so all I did was to input the instructions one by one, as carefully as I could. I remember how my father helped me debug some of the programs. I was also writing some small programs by myself - again, taught by my father who was hooked by the possibilities opened by the personal computer. I remember drawing cones from a series of radius-decreasing circles - the "for" loop. It was more than 20 years ago.

Fast forward 4 to 6 years and, in 1995, I got my first real PC. I was 15 and I started using it for playing games and composing music.

First lines of code:

Two years later, in 1997, I met a real programmer. I was visiting an aunt and she introduced me to one of her former students who was a professional developer. I had a brief introduction into the world of Delphi and Windows rapid application development. Around the same time (July-August 1997) I first laid my eyes on a computer magazine article on Javascript and dynamic content in web pages. It was the time of Netscape Navigator and client-side Javascript was absolutely cutting edge. I was fascinated. I remember reading the same article over and over again for hours. It made sense for me.

Few months later my parents brought home Visual Basic 5 and a Visual Basic book. I took the book, I installed Visual Basic and started to learn. My first complete application was a drawing Paint-like program which used the native Win32 function FloodFill to fill shapes. I particularly remember this detail because, for me, being able to access the powerful native Win32 functions was like magic. It was what real programmers did. Immediately after, I wrote my first game - a Tetris clone.

Visual C++

I don't remember exactly how, but I remember stumbling upon a Visual C++ book in my personal library (Visual C++ For Dummies). Soon, I got hooked by the power of native code and the promise of absolute speed. I knew that if I wanted to be a real programmer I had to go the C++ way. I was 18 and the year was 1998.

I remember clearly reading about input and output streams, about linked lists and pointers. Linked lists in particular were a major stroke of insight because, at that time, they seem so hard-core, so close to the machine, such a powerful data structure. I remember that I was in vacation, that it was summer and very hot.

I quickly moved to MFC and Win32 programming. I got a new book (Visual C++ 4) and I started the long way of coding native UIs. I remember the book was mostly about all sorts of wizards the environment provided to assist programmers in writing the UI code. I didn't like the idea of having code generated for me that I didn't understand. So I started from scratch to write a MFC application without the help of wizards. Once I got the main window up and running, with menus and the ubiquitous "About" dialog, and I knew I had to do something with it. Around the same time, one of my friends, Iulian Ursache, invented an algorithm for parsing and evaluating mathematical expressions. I had the window, he had the algorithm so we met and worked together to write our first Win32 function plotting application. It was such a breakthrough! We were one year away from finishing high school (1998).

First commercial product:

The same year we had our first entrepreneurial experience - we developed a multimedia CD for our graduation. I remember people looking awkwardly at us when we were asking for money. It was my first experience with a commercial product that had to work on more than my machine. It had an installer, it was distributed on a CD-ROM, it had HTML content and a Visual Basic application that integrated Internet Explorer. I remember that half of our colleagues had problems running it but, in the end, we were able to ship it. Good for us, because we had already cashed their money.

Java days:

Soon after finishing high school I started learning for the admission exam to the University. I remember my parents leaving me home to study and myself sneaking in to the computer. I had discovered Java and I had finished my first Java game just days before the exam. I was 19 and it was a Minesweeper clone.

Briefly afterwards came another Java board game and yet another board game on Linux (C++ KDE application, written with KDevelop). I am mentioning all these technologies because, back then, every time I was stumbling upon a new development environment or operating system I had to write a program for it). While the first application taught me about the branch-and-bound algorithm, the latter opened my eyes towards A* search and heuristics.

While I use the "I" pronoun quite a lot, we were actually a group of friends interested in programming and operating systems, and we talked a lot about these subjects. They, for instance, opened my eyes to Linux and to many algorithms and techniques.

The next two years were mostly dominated by Java - a function plotting and curve fitting application written for the physics department at the University, a second commercial application (a website with database support) for the company my father was working for, and many smaller apps and games. Java was very useful for me as it got me the power level I wanted, the extensive library I was looking for, the ease of coding that allowed me to finish my apps within reasonable time and a simple distribution environment that did not require extra installers or additional dependencies.

My first employment:

In 2001 I got my first summer job as a programmer; I wrote multiple apps that were then sold on the Elance website: an HTML editor with syntax highlight, a visual editor for CSS and a DWG (Autocad) file viewer using the OpenDWG library. I remember perfectly those days as I was excited to work with other colleagues side by side, coding together more for fun than profit. Back then was when I first got introduced to OpenGL and the NeHe tutorials (now in the legacy section) as my former manager was coding a 3D chat application. A new stroke of insight - 3D graphics were not a miracle and, although difficult to work with, not something outside human reach.

In 2002 I landed my first full time job. I was halfway through the University and I had to combine both work and studies. That was exactly 10 years ago. I started off coding C++ on Linux, writing a voice recording application. I remember my first assignment was to develop a driver for a National Instruments data acquisition board that was used by the app. It was kernel development and every time it crashed I had to reboot the system. Around the same time, I got my first lesson in customer management. The job asked us not only to write the code, but also go to the customer, install it and provide support for it. I remember that we had to call him every two days to get information about how the system was functioning and ask if he needed any help from us. We were a team of three, all students, all of the same age, all friends. The company manager gave us free hand and we had no team leader to guide us. Beautiful days, with lots of things to learn; a mixture of Linux, Windows, C++, Java, C# development, more oriented towards fun and interesting technologies than to actual business requirements. Crazy days and some nights spent in the office.

My first 3D game and the move to Bucharest:

During the same period I was involved with some other interesting projects: a regular expression parser and interpreter, a website and my first Perl CGI scripts, a 3D Tennis game (I remember spending weekends locked in my room coding on it), I learned C# and I coded a parallel maze searching algorithm (I was more excited about maze generation than the parallel search, to be honest), and many more.

Then, in 2004, I graduated University and moved to Bucharest. I started as a Web Developer managing an application for a British client. Soon afterwards I saw the job announcement for Ubisoft and I got a job there. In Ubisoft, I participated in quite a few projects, working on physics, animations, AI, pipeline, network synchronization. I got into the lead programmer role in 2007 and then, in December 2008, I became Producer. Soon I am going to finish my 4th project in this position, still working with Ubisoft, but with a team in Ukraine. I am writing this post from my hotel room in Kiev, on a hot summer day, 10 years after I got my first full time employment, looking forward to the new challenges that lie ahead.

Note:


(1) I added Java here because discovering it represented a significant turning point in my professional growth. At the same time I was also discovering the Web and cross-platform development, Linux, productivity and the need for easy deployment. Later, I've mostly abandoned the language in favor of C# (initially) and C++ later. Therefore, it has been many years since I've written a program in Java.

Saturday, September 3, 2011

Entrepreneurship - Notes

GRASP Start-up Weekend - Bran (July 2011)

Here are the notes I took while participating in the GRASP Start-up Weekend meeting this July. I believe they apply to any person looking to take control over his or her (professional) life, not only to those who we commonly refer to as entrepreneurs. For instance, one can have an entrepreneurial spirit in pro-actively managing his education, his career or act as an intrapreneur by employing resources from an organization to develop new ventures inside it. For me, all of the elements below define a free, action and growth oriented spirit.


http://www.facebook.com/MyGRASP


1. What kind of profiles does a business need? 

All three:
  • Entrepreneur - breaks the rules, risks
  • Manager - predictable improvement
  • Administrator - keep it working
As nobody is perfect, always work with people who are better than you at least in one area.


2. What does an entrepreneur need? 

  • Business plan:
    • More than a business plan it needs a market analysis (simple: Google, ask  for information and feedback wherever you go. Test your product before you do it). Niche! Segment market!
    • Start slim. Favour contractual relations:
      • Don't have employees
      • Don't have co-owners
      • Own 100% as long as possible
      • Worst: 50%-50% due to lack of decision power
    • Write your business plan like you want to sell your business
    • Elevator pitch - brief and clarity of ideas
    • Don't overestimate revenue and don't underestimate costs
    • Write then get feedback - test it before you implement it
    • Bring an idea from outside - if you can copy, don't reinvent the wheel
    • Define your product, your market, your network, your selling and your growth strategy
    • Don't stick with the business plan but have it handy as a baseline
  • Credibility:
    • Most important: business today is done based on trust
    • Built in time
    • Who is your mentor and who is your advisor? Board of trustees.
    • People you want to know always talk to you when you are a student. When you are in business, they think you want to sell something - the true value of an MBA is access to these people.
    • How to build and maintain credibility:
      • Keep people informed of what you do. Send emails from time to time to cultivate relations, not necessary to ask for something.
      • Send information that might be useful to them
      • Say thank you
      • Reply immediately to emails and phone calls
      • Send emails to people after you meet them

"Tell me what you have done and who you are associated with and I'll tell you who you are".
  • Money:
    • Cultivate relations with bankers and lawyers.
    • More important than a refusal is to know why you were refused. Ask for feedback.
    • Sources of money:
      • Personal funding
      • Angel investment
      • Venture Capital
      • Banks
  • Think big and global:
    • How would it transform your business by growing it not by 30% but by 1000% or 10000%. Bringing ideas to the extreme reveals marginal forces and ideas one may not take into consideration. Forces prioritization.
    • The world is not only Romania or Western Europe. It is also USA, the Arab countries, Russia, China, India, Japan, South America, Africa. How can we extend to these countries? Distant worlds may need my expertise more than the people around me.


3. Personal traits:
  • Self disciplined
  • Curious. Quick learner.
  • Writes ideas down - get into the habit of writing down everything you think about. Plan your week, plan your day, plan your next year. In writing. Write names. Calendar meetings and activities. Ideas. Catalogue sources of information. 
  • Thinker and doer - think first and prototype quick. Rework. Incorporate feedback. Prototype and deliver something fast.
    • Who are my early adopters?
    • Who can benefit immediately? (company / person)
    • Develop in collaboration
  • Courageous
  • Passionate
  • Forward thinker: how can this concept work without me? 
  • Servant mentality: not what I want to do but how can my business help others? This gives purpose which, in terms, helps people self propel in times of hesitation. It helps define the mission which, in terms, is the goal for strategy and tactics and a major motivation factor. Who are we? - What is my motivation? Leader = agent of change.

4. True value of an MBA:
  • Understand the language of business
  • Know and network with business people who wouldn't talk to you unless you are a student
  • Create mental models for reality checks

And since we also took pictures there, here is another one:

Bran, Romania

Tuesday, December 8, 2009

Disconnected Thoughts


The difference between a dreamer and a person of great success is that the latter actually does something to achieve his / her dreams.


Focus is slowly shifting from efficiency and order to extreme motivation, adaptability and innovation. Since we need to invent new ways to serve our customers, we need to find those people who are desperately motivated to do it (and keep them motivated :p).


The effectiveness of a research report is inversely proportional to the thickness of its binding - Todd Wilkens (Adaptive Path). I'd extend that to that the effectiveness of any kind of report or document is inversely proportional to the thickness of its binding :D


We are not our target audience! When we build a product, we need to understand the needs, the emotions and the ways our customers are doing things. We are not developing products for ourselves but for a wide range of people, with a diverse range of feelings and backgrounds and we need to see who they are and honestly empathize with them as persons, not as consumers.

Tuesday, November 3, 2009

Innovation - Random Thoughts

* You tell me that you are waiting for inspiration? Stop waiting and do something! Grab a pen and a piece of paper to scratch ideas all day long. Think of your current problem with all your mind, heart and soul. Ask someone. Prototype with all available tools. At work, at home, in the shower, in the car. Take a break and then restart the process. Be unsatisfied until you have all the answers.

* True innovation lies outside the boundaries set by rules. But we need rules to organize all the rest.

* There are at least two prerequisites for innovation: a clear set of constraints to deal with and an unsatisfied, extremely curious, always looking for improvement and tenacious set of mind.

* Innovation needs constraints, know-how and will. But, above all, it needs a well defined problem and people who are desperately motivated to solve it.

Tuesday, October 27, 2009

Procedure

Procedure: a tool not a purpose!

As manager, I try to encourage people to solve problems and think outside procedures. If a procedure doesn't help solving a problem, maybe the procedure is too rigid and maybe we should think more carefully about it. Maybe it needs an update.


Wednesday, October 14, 2009

Management Creed

One of my main priorities as a manager is to develop people. I'm striving to create development opportunities for my team, to help them become better professionals, better as humans, better in communication, more organized and more effective. I wish all feel that our project is in line with their personal development aspirations. Only then I can obtain the 110% we need to finish within impossible constraints. I wish I never disappoint my colleagues, to be honest and fair no matter what the consequences, not to make compromises, care deeply for them as humans beings, with feelings, needs, hopes and dreams. Many times I fail to get that 110%, but then I know I've made a mistake somewhere - not in my creed but in my deeds.

Wednesday, July 15, 2009

Suggestion

Give people confidence and a tough milestone. Prepare the safety net and be amazed by the results. 



Thursday, July 9, 2009

Comments on Not Asking Questions

Most of the people don't ask questions they think will put them in an inferior position or damage their image because they feel they should have already known the answer. Why? A better approach is, I guess, to understand that if you are a pro than you are a pro and people see and respect that in you or, if you are an aspiring pro, then the easiest way to become one is to learn - and people respect that also. By restraining oneself from asking, one gets to:
  • Not get relevant answers.
  • Consider many things to be understood a priori by all parties involved because "real pros already know all these simple things" - Do I need to say how wrong that is? How all people see things differently because they had different experiences?
  • Miss ideas, suggestions. All unspoken words are a missed opportunity for lateral thinking.
  • Be considered uncommunicative or, sometimes, even worse: arrogant or stiff.
  • Understand things the wrong way, get wrong ideas, do wrong things.
I guess that, if one is in the room, probably he/she is there because someone has confidence that he/she has something to say so why not say it?

VERY IMPORTANT: no to fall to the other extreme: speak all the time because you think you have all the answers and have the right to monopolize the whole conversation. The point for asking questions is to let others speak and gather information from them by actively listening to what they have to say.



Thursday, July 2, 2009

Thoughts On "Cannot Be Done"

We are valuable for what we can do and not for what we can't do. Before jumping to the conclusion that something is impossible, one should make sure he understood perfectly the requirements, that he studied in depth all possible scenarios, that he consulted all available resources and tried to find all possible angles from which the problem could be attacked. I'm not saying that everything is possible or that one should hide if a problem is insolvable. All I'm saying is that it's really not ok for someone to start a priory by "we can't do that" without making sure it cannot be done under all circumstances.

BTW, requests that cannot be completed no matter what are very rare - usually managers and customers have a sense for what is absurd and what is not and don't ask for impossible things or, at least, are willing to discuss options. Most of the time it cannot be done because of miscommunication and lack of mutual understanding. Even under insane deadlines, something can usually be done, but may require changing the requirements and a close tracking.


Friday, June 19, 2009

How Do YOU Want To Be Treated?


Disclaimer: any resemblance to actual characters or facts is just a coincidence. This post does not discuss a specific person of event but
rather tries to underline the idea that people need to be treated with respect, regardless of their position.

Let's start by sharing a link: the ethic of reciprocity summarised in a well known phrase, rooted in the culture of many people: "do to others what you would like to be done to you" or, as it is known across the globe, "The Golden Rule".

Some managers may forget it, being blinded by their function, so they start patronising their subordinates. Others, probably driven either by incomprehension of their role - to service the team to do its job - or a sense of insecurity, position themselves too far from their people thus impeding informal communication or, even worse, rely solely on the argument of hierarchy to force the completion of their goals (instead of discussing personally and try to find mutual understanding). Don't worry! If the team doesn't tell you stuff, they will share it among themselves, behind your back :). I personally don't like hearing words like "subordinate", supervisor" or "hierarchy" when it comes to me and my men. It's not that I am an anarchist of some kind - far from me that thought - but in many ways I find them to be a relic of the past, of times when people were considered brute work force, with no rights and no dignity. Basic needs include food, water, a shelter and security but, right after that comes dignity. Every person needs to be treated with respect and be given a private space to react and sustain his ideas even during an argument. This is actually the reason why negative feedback should be kept private. I find it outrageous when a manager calls his team "a bunch of thick skins" or other names, either in private or in public. He should, under all circumstances, refrain from such judgements.
How I want to be treated by my supervisor is how I expect that I, in turn, treat my team and my team treats me in return - as partners. Me with my responsibilities, him / they with his / theirs. We are all here to build great products for our customers so we are sailing in the same boat, as they say. We should understand and respect each other's responsibilities and act accordingly. I don't mind being guided and shown what and why we go in a certain way but I do mind being patronised. I do mind if I am treated as an inferior being instead of being respected for who I am, for what I stand for and for what I do. I do mind if I'm being dismissed without first being listened or not be given a chance to speak my mind. I do mind also if my values are treated with disregard. Never forget that almost every human on Earth wants to be appreciated for his right judgement and I am no different - and chances are that neither are you! Even more, I consider myself a trained specialist, with something valuable to say. I want to be able to express my personality and have the space to manifest my ideas and thoughts especially because I believe that my greatest asset is my mind - that's why they hired me in the first place, right? Who am I? I'm not only Alexandru; these needs are not only mine, they are universal. So, don't forget: PARTNERS: your boss, your colleagues, your team!


Comment:


Some people may argue that not all men/women are the same in what they want and not every one expects to be treated the same way or have the same values as another one has. Totally true and this is precisely why I feel that my argument is solid. One of the first duties of a manager is to adapt his communication style to each of his team members as he, in turn, expects the same thing from his manager too - adaptability, respect, cherish diversity of thought.


Saturday, June 6, 2009

Not Employees But Strategic Partners



One of the duties of a manager is to create a sense of urgency within the team. This is not without a purpose as delivering sooner means not only cheaper but also hitting a market window opportunity, enhanced creativity due to constraints, sense of completion and a lot more. However, creating such a state is very difficult as many managers (including myself) are not always able to come to their team with a solid answer to "why do we need to rush?" question. Most of the time, we mumble something like our boss told us so and we have to obey him. Quite lame, isn't it? There is, however, a powerful tool and a good reason behind the tight deadlines except costs - that is, the company strategy. Often neglected because managers think their employees are not interested, the long term strategy and the overall company vision give the answer to many questions concerning the project and its constraints. Communicating the strategy in a way that is understood by people will turn them into strategic partners rather than simple employees - a part of something bigger, something that makes sense and has a reason. They will better understand what is expected of them as they will see their place in the bigger picture. They will also grasp what is coming up next and also increase their loyalty because they have something to be loyal to. Every human being wants to catch a small glimpse of his future and if managers are capable unveiling the bigger plan (strategy) it will provide at least a partial answer to this natural human need. People who understand their role are much likely to give you trust and have the tendency to rally toward a common goal even if the future is cloudy. So tell your teams about the company strategy and you should be able to see miraculous results.

Tuesday, December 2, 2008

Why Sometimes Less Means More?

May sound like a contradiction but, actually, it is not. Maintaining less things or activities around you helps you keep your focus on what is important. It helps you use your entire energy to do only the most crucial things and do them better. Switching tasks is time consuming and energy inefficient. It can also get you depressed because you just don't get to reach your maximum potential in any fields - you know you could do "that" better! Simplicity generates a feeling of lightness and that leads to optimism and confidence. Multitasking is great and can help you do more because it allows you to better fill time gaps and also doesn't get you bored but, be careful how many tasks you undertake ;). What to do when you get overcrowded? Delegate, simplify, get rid of things that you don't really need - become efficient and effective. Too many activities will get you lost in details and you will loose the big picture. When you feel it's just too much, stop, think, reanalyze, reorganize.